Appel d'une fonction [Résolu]

Signaler
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010
-
Bonjour,


 je n'arrive pas à appeler une fonction, c'est la fonction print.
C'est une fonction qui doit faire appel à l'accesseur pour afficher la variable
m_MyStringSchool.


 



Voici la déclaration de ma classe dans un fichier.h:


 








class
Youth


{




public
:


std:string
getMyStringSchool();//
accesseur




void
print();//fonction d'affichage




[...]





private
:


[...]


std:string m_MyStringSchool;


};




#endif





 







et voici là où je tente de l'appeler dans
un fichier.cpp:







 















void

print()

//fonction d'affichage








{







string chaine;







chaine = Youth::getMyStringSchool();








cout << chaine <<

endl;







}






 







le compilateur me dit:
Youth::getMyStringSchool': appel non conforme d'une fonction membre non
static







et je ne comprend pas comment je pourrai m'en
sortir et pourquoi le compilateur me dit ça.









Merci pour toutes
remarques ou simples suggestions.

9 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Je viens de remarquer que ta fonction print n'est pas declare comme il faut:

void Youth::Print()
{...}

Et la quand tu veux utiliser une variable membre tu n'as pas besoin de mettre Youth:: devant la variable.

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut

De ta fonction print tu as acces a toutes les variables membres de ta class:
un simple cout <<m_MyStringSchool; devrait suffir.

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010

J'ai essayé ton idée en faisant:

void print()//fonction d'affichage
{
    cout << Youth::m_MyStringSchool << endl;  //
}

car effectivement on sensé avoir accès aux données, mais le compilateur dit:

référence non conforme à un membre non static 'Youth::m_MyStringSchool'
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Ben si ton compilo veux que cette variable soit static, declares la en static:
static string m_MyStringSchool

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010

Ben c'est une soluce.

Mais comment modifier une static après l'avoir déclarée?

J'aimerai avoir la possibilité de créer mon objet et de pouvoir modifier le contenu de m_MyStringSchool après la création.

Si tu as une idée sur la méthode.... n'hésite pas, je suis preneur.
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Une variable static n'est pas une variable const.
Son contenu peut etre change sans probleme.

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010

Ok, je vais tenter ta soluce.

Merci pour ton aide! Bon courrage pour tes études!
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010

Bon, ben en fait c'est pas gagné

car maintenant mon compilo me sort que j'ai pas le droit d'accéder à des variables privées!

"impossible d'accéder à private membre déclaré(e) dans la classe 'Youth"
Messages postés
12
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
15 juin 2010

C'est géniale! T'es un boss! ça fonctionne! Bravo avec un grand "b" et merci avec un grand "m"!
Tu n'as pas dit à quel tu me dépannes!

Merci!