Bonjour,
Je cherche à effacer proprement mes pointeurs en sortant de mon jeu SDL, fenêtré pour l'instant, par un clic de fermeture.
Dans le Simple Engine Framework du gpwiki est déjà inclus, dans la classe de base "Engine", un atexit(SDL_Quit).
Le nettoyage des divers pointeurs du jeu se fait dans sa classe dérivée 'CMyEngine' et plus précisément la méthode 'CMyEngine::End'.
J'ai lu ici qu'on pouvait avoir jusqu'à 32 appels à atexit() dans un programme C++, qui s'exécutaient ensuite successivement.
Mais lorsque je rajoute atexit(End) ou atexit( CMyEngine::End) dans la méthode CMyEngine::AdditionalInit() j'obtiens systématiquement le message d'erreur suivant :
error C3867: &'CMyEngine::End'*: liste d'arguments manquante dans l'appel de fonction*; utilisez 'CMyEngine::End' pour créer un pointeur vers membre
Comment faire ?
Ci-dessous, les déclarations simplifiées pour les fonctions CMyEngine::AdditionnalInit() et CMyEngine::End dans l'ordre où elles apparaissent dans le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class CMyEngine: public CEngine
{
public:
CMyEngine() {};
void AdditionalInit ();
void End(void);
};
void CMyEngine::AdditionalInit()
{
//Modifie la sortie
atexit( End );
//Initialisations diverses ...
}
void CMyEngine::End(void)
{
// Nettoyage des pointeurs
} |
J'ai notamment pris la peine de rajouter "void" dans la déclaration d'arguments, mais ça n'a rien changé...
Merci d'avance.
Partager