Bonjour,
Voil� �a devait arriver, j'ai un nouveau probl�me et comme la derni�re fois c'est ici qu'on m'a sorti de la gal�re (notamment loulou24), je suis de retour.
J'�cris un code (c'est un devoir de fac) qui permet de tirer et d'afficher un certain nombre de cartes dans un jeu de tarot qui comprend 3 cat�gories de cartes appel�es 'oudlers', 'atouts' et 'cartesimple'.
Il y a une classe abstraite "carte" et 3 les autres qui d�rivent de celle-ci
Le code fonctionne bien avec une fonction virtuelle hasard() pour tirer une carte et afficher() pour l'afficher.
La o� �a s'est compliqu� c'est quand on nous demande de ne pas tirer 2 fois la m�me carte.
Je voulais comparer 2 cartes de n'importe laquelle des 3 cat�gories :
o� jeu[] est un tableau statique d'objets 'cartes' et d une instance de l'objet 'donne' qui comprend justement le membre 'jeu'
Code : S�lectionner tout - Visualiser dans une fen�tre � part if(d.jeu[i] == d.jeu[j])
J'ai donc cod� une surcharge de l'op�rateur ==, dans la classe m�re on a :
et dans les classe filles, par exemple dans la classe "cartesimple" �a donne :
Code : S�lectionner tout - Visualiser dans une fen�tre � part virtual bool operator == (carte&) = 0;
L'op�rateur dynamic_cast me permet bien d'acc�der � la valeur de la carte, par polymorphisme : j'ai v�rifi� que b->valeur fournissait la bonne valeur. Mais apparemment, b->valeur et valeur sont toujours �gaux. Alors qu'en invoquant 'valeur', je croyais m'adresser � l'instance courante et non pas � la carte pass�e en param�tre ???
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 bool carteSimple::operator == (carte& c) { carteSimple* b = dynamic_cast<carteSimple*>(&c); if(b -> valeur == valeur) return(true); else return(false); delete b; }
Est-ce que quelqu'un voit o� peut se situer le probl�me ?
Partager