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 ...).
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&);
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"
}
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);
};
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:
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 ... }