我正面临使用继承和重载的意外行为。或者说我做错了。
(正如这篇文章所建议的)我有一个类使用回调函数响应 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);
}
还有一个继承自第一个类的类。
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>*)
这是正常行为吗?