Salut a tous,

J'ai ecris dans une classe Ennemies qui est une liste d'EnnemieNode la fonction foreach suivante :

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();
     }
}
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
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);
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.

Un peu de code pour etre plus explicite :

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
}
Merci par avance