Salut a tous,
J'ai ecris dans une classe Ennemies qui est une liste d'EnnemieNode la fonction foreach suivante :
Si j'utilise cette methode dans mon main de la facon suivante, ca fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void Ennemies::forEach(void (* process)(Ennemie* ennemie)) { EnnemieNode* currentNode = firstEnnemie; while(currentNode!=NULL) { process( currentNode->getEnnemie() ); currentNode = currentNode->getNext(); } }
Cependant, lorsque je veux utiliser cette meme methode foreach dans une methode de classe, ca ne fonctionne pas. Le compilo me dit que j'ai passe un unknow type en parametre alors que la methode (le parametre passe a foreach) en question est declare dans le header et que son code est donne dans le fichier cpp et est compile. J'ai meme essaye de mettre cette methode publique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // methode utilisant un pointeur d'ennemie void manageEnnemie(Ennemie* ennemie) { if (player.isHeadTrash(ennemie)) player + ennemie; // j'ai surcharge le +... } //une ligne dans le main : ennemies.forEach(manageEnnemie);
Un peu de code pour etre plus explicite :
Merci par avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // Dans le header de ScreenManager en publique : void displayEnnemie(Ennemie* ennemie); // dans screenManager.cpp : void ScreenManager::displayEnnemie(Ennemie* ennemie) { Organ* currentOrgan = ennemie->getHead(); while (currentOrgan != NULL) { displayOrgan(currentOrgan); currentOrgan = currentOrgan->getNextOrgan(); } } // la methode qui utilise foreach : void ScreenManager::displayEnnemies(Ennemies* ennemies) { ennemies->forEach(displayEnnemie); // c'est la que ca plante }
Partager