0
我正在面對使用繼承和重載的意外行爲。 或者說我錯了。將繼承的類作爲(void *)傳遞給回調函數
(如this post建議)我有誰使用一個回調函數的C API響應類:從第一個繼承
class APIWrapper {
protected:
// This callback is registered to a C api
static void _messageCallback(double deltatime, vector< unsigned char > *message, void *userData);
public:
void manageNewMessage(double deltatime, vector<unsigned char> *message);
};
void APIWrapper::_messageCallback(double deltatime, vector< unsigned char > *message, void *userData) {
((APIWrapper*) userData)->manageNewMessage(deltatime, message);
}
和A類。
class MyController : public APIWrapper {
public:
void manageNewMessage(double deltatime, vector<unsigned char> *message) {
// Customization
message.at(1) = 0;
APIWrapper::manageNewMessage(deltatime, message);
}
};
如果我聲明一個MyController
對象,該重載方法MyController::manageNewMessage(double, vector<unsigned char>*)
不會被調用。 這是正常行爲嗎?
我知道這很簡單。所以在我的情況下,它只是虛擬的(不純),感謝精確度。 – muxisar 2013-05-01 22:07:26