此問題已被詢問,但未得到滿意答覆。()操作員超載
我有一個類作爲一個事件處理程序,我想有一個很好的語法來調用事件以外的事件處理程序。這個歸結爲重寫()運算符。我目前有
class EventHandler
{
public:
void Call(void* sender, EventArgs e);
void operator() (void* sender, EventArg e){ Call(sender, e); }
};
它工作正常。我可以通過
EventHandler EH;
EH(nullptr, EventArgs::Empty());
調用事件處理我的問題在於我通常存儲在堆上的事件處理程序,所以我需要
EventHandler* EH;
EH(nullptr, EventArgs::Empty()); // error but this is the syntax I'm hoping for
但這隻能
完成如何覆蓋()運算符使其與指向EventHandler對象的指針一起工作?我已經看到了一些看起來像重載 - >()運算符而不僅僅是()運算符的東西,但我一直無法理解它。
也許不存在令人滿意的答案的原因是因爲它不可能?編譯器會識別指向函數的指針,並允許您放棄取消引用,但指向類對象的指針沒有對應的快捷方式。 – 2014-10-31 16:07:32
您可以將非空指針轉換爲引用以獲取您正在查找的語法。 – quamrana 2014-10-31 22:16:26