POO : problème d'objet

Résolu
Kelm0 Messages postés 23 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 20 juin 2008 - 22 mars 2008 à 16:05
Kelm0 Messages postés 23 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 20 juin 2008 - 23 mars 2008 à 10:58
Bonjour tout le monde, pour ceux qui connaissent le C++, j'ai un petit problème : je voudrais poser des conditions en fonction du nom de tel ou tel objet d'une même classe :

Pour exemple :

void Classe::attaque(Classe &Reference_a_la_Cible, int dommage)
{
if (Reference_a_la_Cible <strike>== Gaston</strike>) { cout << "Gaston est attaqué." }
if (Reference_a_la_Cible  ... { cout << "... est attaqué." }
}

La partie barrée étant la faute dans mon compilo (Gaston n'est pas défini ...).

6 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
22 mars 2008 à 20:22
Bonsoir,

Voici un exemple possible avec le nom du joueur stocké dans sa propre instance (j'ai pris une chaîne fixe mais on peut modifier avec de l'allocation dynamique) :

#include "stdio.h"
#include "string.h"




// --- Classe

class Attaquant
{
   public:
   Attaquant(const char*);
   ~Attaquant();
   void attaque(const Attaquant&);




   private:



   char m_Joueur[32];

};









// --- Constructeur


Attaquant::Attaquant(const char* Joueur)
{
   strcpy(m_Joueur,Joueur);
}






// --- Destructeur

Attaquant::~Attaquant()
{
}






// --- Attaque

void Attaquant::attaque(const Attaquant& Joueur)
{
   printf("%s est attaque par %s\n",Joueur.m_Joueur,m_Joueur);
}





void main()
{
   Attaquant Gaston("Gaston"),Paul("Paul");
   Paul.attaque(Gaston); // je veux le message : "Gaston est attaqué par Paul"
   Gaston.attaque(Paul); // je veux le mesage : "Paul est attaqué par Gaston"
}




Jean-François
3
mmaximum Messages postés 38 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 décembre 2011 2
22 mars 2008 à 16:44
Où est défini ta variable Gaston, si ce n'est  pas une varible écrit la entre "", ce qui donne

void Classe::attaque(Classe &Reference_a_la_Cible, int dommage)
{
if (Reference_a_la_Cible == "Gaston") { cout << "Gaston est attaqué." }
if (Reference_a_la_Cible  ... { cout << "... est attaqué." }
}

Sinon, il faut que tu la définisse dans ton fichier .h ou .hpp comme ça si c'est du c++, si c'est du c, du utilise printf() à la place de std::cout et tu n'include pas strings
Je me souviens plus si il y a un s à string, essaye les 2(string et strings)

#include <strings>
class Nomdelaclasse
{
private:
//Les variables et fonctions privé
std::string Gaston="blabla";//Tu peut aussi la déclarer en variable public
public:
//Les variables et fonctions public
void attaque(Classe &Reference_a_la_Cible, int dommage);
};

Je pense que c'est ce que tu cherchais
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
22 mars 2008 à 17:33
Impossible et interdit d'initialiser un membre d'une classe comme ca:
class Nomdelaclasse
{
private:
//Les variables et fonctions privé
std::string Gaston="blabla";//Tu peut aussi la déclarer en variable public
public:

Tout se fait dans le constructeur.
0
mmaximum Messages postés 38 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 décembre 2011 2
22 mars 2008 à 19:34
Oups, j'avais oublié!!!
0

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

Posez votre question
Kelm0 Messages postés 23 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 20 juin 2008
22 mars 2008 à 19:45
Mais pour moi Gaston est un objet de la classe Classe (il peut y en avoir une dizaine d'autre Objets de cette même classe) et, en faisant dans le main :

Classe Gaston, Paul
Paul.attaque(Gaston) //je veux le message : "Gaston est attaqué par Paul"
Gaston.attaque(Paul) //je veux le mesage : "Paul est attaqué par Gaston"

je dois poser une condition :
if (&reference_a_la_cible == Paul ou Gaston) { cout ... }

PS : le " " ça marche pas :/


 
0
Kelm0 Messages postés 23 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 20 juin 2008
23 mars 2008 à 10:58
ah ok j'ai compris, il fallait donner un paramètre supplémentaire pour le nom du joueur, merci ^_^
0
Rejoignez-nous