我正在創建一個基於回調的類。我需要讓客戶自由地調用他定義的回調。例如,我有一個Base類:有什麼方法可以知道C++中的派生類是否已經實現了非純虛函數?
class Base
{
...
public:
virtual void OnMsgReceived(const char *msg, char *&response);
virtual void OnMsgReceived(const char *msg, string &response);
};
客戶MUST實施任何一個,但不是2.我如何知道哪一個他已經實施 這樣,當我處理回調,我稱之爲正確對象,真愛?
我知道我不能在對象的構造實例化過程中做到這一點,但是一旦對象被實例化,是否有任何方法可以檢查這些虛擬函數中的哪一個已經實現?謝謝。
爲什麼不能客戶端同時實現虛擬' '功能? – iammilind
只要我的2美分,我會避免使用此設計,並提供似乎是單個事件的兩個回調,即OnMsgReceived,只要相同的條件導致回調被執行。如果他們真的不同,那麼他們應該有不同的命名。 – Matthew