1Fermer3
SCPCDLe 13/03/2012 à 13:55
pour apperler ton "OnEnterBackground" de "Player", il faut que ton pointeur d'objet "pApp" pointe sur un objet de type "Player" :

l'exemple suivant ne fonctionne pas car "pApp" n'est pas initialisé (c'est un pointeur fou) int main() { AppBase *pApp; pApp->OnEnterBackground(); return 0; }

Exemples qui fonctionnent : (sans le template pour le test) #include <stdio.h> class AppBase { public: virtual void OnEnterBackground() { printf("methode de AppBase\n"); } }; class App : public AppBase { public: virtual void OnEnterBackground() { printf("methode de App\n"); } }; class Player : public App { public: virtual void OnEnterBackground(void); }; void Player::OnEnterBackground() { printf("DidEnterBackground\n"); } int main() { // appel la methode de AppBase AppBase *pAppBase = new AppBase(); pAppBase->OnEnterBackground(); delete pAppBase; // appel la methode de App AppBase *pApp = new App(); pApp->OnEnterBackground(); delete pApp; // appel la methode de Player AppBase *pPlayer = new Player(); pPlayer->OnEnterBackground(); delete pPlayer; return 0; }

Il faut donc que tu récupères soit une référence, soit un pointeur sur ton objet instancié quelque part en mémoire.

Tu dois avoir un moyen pour récuperer cet objet généralement soit par un parametre à ta méthode, soit en utilisant un getter sur une classe associé voir à partir d'une classe singleton.