Pb classe

cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 25 févr. 2004 à 13:43
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 25 févr. 2004 à 15:17
salut a ts

voila j'ai taper sa com code :

class personnage
{
private:
float x;
public:
float changer(personnage);
}vaisseau;

ensuite je definis la fonction :

float personnage::changer(personnage teste)
{
//par exemple
teste.x = 500;
}

et ensuite qd je me sert de la classe daans la fonction main avec un objet ,je tape :

int main()
{

vaisseau.changer(vaisseau);
cout << vaisseau.x;

}

et ben x vaut 0 et pas 500 et je ne sais pas pk car normalement la fonction changer devrai faire vaisseau.x = 500 alors c'est bizarre
si qq1 peu me dire pk x vaut 0 et le moyen alors de changer x ds une fonction sans mettre directement le nom de l'objet

merci d'avance

@+

4 réponses

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
25 févr. 2004 à 13:53
y a une erreur de conception, si tu veux changer la valeur x de ton objet il faut faire

void personnage::changer(float newValue)
{
    x = newValue;
}

int main()
{

vaisseau.changer(500);
cout << vaisseau.x;

}
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
25 févr. 2004 à 14:48
ouai mais avec cette technique je ne peux pas definir plusieur objet different avec un x different car ds les param de la fonction il ni a pas l'objet .
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
25 févr. 2004 à 15:01
C'est quoi que tu veux faire alors ?

int main()
{
personnage vaisseau, vaisseau1;

vaisseau.changer(500);
vaisseau1.changer(100);
cout << vaisseau.x << endl;
cout << vaisseau1.x;

}

Tu peux avec plusieurs objets avec des x différents.

Je ne comprends pas la question peut-etre
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 févr. 2004 à 15:17
dans une méthode définie dans une classse, il y a un paramètre implicite (this ) qui est un pointeur vers l'objet auquel se rapporte la fonction

donc quand tu fait
vaisseau.Change(0);

la fonction change est appelée avec le paramètre 0 et le paramètre implicite this, qui pointe sur vaisseau, donc pas besoin de le lui fournir.
0
Rejoignez-nous