Tengo una pregunta muy extraña.¿Cuándo es (esto! = Esto) en C++?
tengo una clase/función:
class MCBSystem {
[...]
template <class Receiver>
void setCallBack(int i, Receiver* receiver, void(Receiver::*function)(void*)) {
iCallBacks.at(i) = new CallBack<Receiver>(receiver, function, this);
};
};
Y heredarlo (multiplicar) en otra clase:
class MenuBox : public OverlayBox, public HIDListener, public FANLib::MCBSystem {
[...]
};
Ahora, si llamo a la función "setCallback":
menuBox->setCallBack(MenuBox::CLICKED, this, &SubMain::widgetClicked);
luego "menuBox" tiene un valor de 0x06cf22b8 pero dentro de "setCallBack", "this" es 0x06cf2370.
¿Puede alguien explicar qué está pasando en la tierra?
[EDIT:] La verdadera pregunta es: si necesito almacenar 'esto' dentro de 'setCallBack', ¿cómo puedo verificar más tarde que 'menuBox == this'?
Muchas gracias en advace!
Entonces, ¿cómo puedo verificar más tarde que menuBox == esto (el que está almacenado dentro de 'setCallBack' ...? –
Creo que debería funcionar si los lanzas a una clase base común. – Philipp
Gracias por todas las respuestas. lo resolvió haciendo: ((FANLib :: MCBSystem *) menuBox) == esto, y sí, funcionó! –