Envoyé par
kornterstrike
Voila des bouts de code :
1 2 3 4 5 6
| Nourriture nourr1("Bambou", 16.5, "Bambou'Four");
nourritures.push_back(nourr1); //nourritures est une liste de Nourriture
list<Nourriture>::iterator it;
for (it=nourritures.begin(); it!=nourritures.end(); ++it)
cout << *it->afficher() << endl; |
Sachant que ma classe Nourriture possède bien la méthode "void afficher();"
Quand tu écris "cout << xxx", tu suppose que xxx est un objet d'un type qui est gérable par le flux cout (un nombre, une chaîne de caractères, etc.).
Quand tu écris "it->afficher", tu appelles bien la méthode afficher de l'objet pointé par it, et cette fonction ne renvoie aucune valeur: elle retourne void.
Tu fais donc qq chose comme un "cout << void"...
Bref, on ne peut pas utiliser dans une instruction la valeur retournée par une fonction dont le type de retour est void, c'est ce que te dit l'erreur.
Par ailleurs, tu auras certainement une autre erreur : *it->afficher() signifie que tu veux déréférencer le pointeur que te renvoie la fonction afficher... c'est peut-être pas ce que tu voulais écrire.
Si tu transformes la fonction afficher pour qu'elle renvoie un std::string par exemple, tu pourras faire:
cout << it->afficher() << endl;
et tout devrait bien se passer.
Partager