I'm facing an unexpected behavior using inheritance and overloading. Or rather I'm doing it wrong.
(As suggested in this post) I have a class who respond to a C api using a callback function:
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);
}
And a class which inherit from the first one.
class MyController : public APIWrapper {
public:
void manageNewMessage(double deltatime, vector<unsigned char> *message) {
// Customization
message.at(1) = 0;
APIWrapper::manageNewMessage(deltatime, message);
}
};
If I declare a MyController
object, the overloaded method MyController::manageNewMessage(double, vector<unsigned char>*)
is never called.
Is it a normal behaviour?