Vecteur et Polymorphisme

Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009 - 5 juin 2009 à 11:52
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009 - 5 juin 2009 à 13:31
Bonjour à tous,

Je suis en train de réaliser un petit jeu de rôle et je bloque sur un point :

Pour être clair, mon programme ne veut pas que Heros[2] attaque Heros[3] (Heros[imetier]->attaquer(Heros[2]);)


Déclaration dans la classe :

voidPersonnage::attaquer(Personnage&cible)
{
cible.recevoiregats(m_degatsarme);
}

Déclaration dans le main :

vector<Personnage*>Heros;

Guerrierguerrierheros("Nomheros");
Magicienmagicienheros("Nomheros");
Monstremechantmonstre();//On créé le monstre qui va être combattu

Heros.push_back(&magicienheros);//On pratique le polymorphisme
Heros.push_back(&guerrierheros);
Heros.push_back(&mechantmonstre);

Heros[imetier]->attaquer(Heros[2]);

En vous remerciant ^_^.

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
5 juin 2009 à 12:48
Et donc, quelle est la question?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
5 juin 2009 à 12:58
Ben.. mon programme ne veut pas que Heros[imetier] (imétier est soit 0, soit 1) attaque Heros[2] (qui est le monstre).
Il me dit :
Heros[imetier]->attaquer(Heros[2]);

no matching function for call to 'Personnage:attaquer(personnage*&)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
5 juin 2009 à 13:02
Heros[imetier]->attaquer(*Heros[2]);

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
5 juin 2009 à 13:09
P'tain, je bloquais juste à cause de ça T.T.

Merci beaucoup ^^. Pourrais tu m'expliquer le pourquoi du comment que je progresse ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
5 juin 2009 à 13:15
C'est très simple : Heros[2] est de type Personnage* (d'après la définition de Heros).
Or la méthode attaquer attend un Personnage& et non un Personnage*, il faut donc déréférencer Heros[2] avec *

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Guiiil Messages postés 13 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
5 juin 2009 à 13:31
Je crois que je vois, merci encore ^_^ !
0
Rejoignez-nous