[C]Appel de méthodes d'une même classe
sting
-
sting -
sting -
Bonjour,
j'ai une question à propos de l'appel de méthodes.
J'ai une classe A et une classe B qui hérite de A.
Dans B, en appelant fct1 et fct2 de cette manière ça ne fonctionne pas de même qu'en faisant this->fct1(), this->fct2().
Est-ce que vous pourriez m'indiquer comment faire dans ce cas.
Merci
j'ai une question à propos de l'appel de méthodes.
J'ai une classe A et une classe B qui hérite de A.
class A{
int fct1(){
...
}
}
class B:publicA{
int fct2(){
...
}
int fct3{
int v = fct1();
int w = fct2();
...
}
}
Dans B, en appelant fct1 et fct2 de cette manière ça ne fonctionne pas de même qu'en faisant this->fct1(), this->fct2().
Est-ce que vous pourriez m'indiquer comment faire dans ce cas.
Merci
7 réponses
-
?
Je comprend pas non plus. Normalement c'est pareil.
Donne nous un exemple concret que l'on puisse compiler.-
Bonjour,
Voici un exemple plus concret.
L'exemple n'est pas compilable tel quel.
j'ai écrit une méthode qui en appelle d'autres.
Le soucis, c'est que que ça me produit l'erreur suivante :Glacier.cc: In function ‘void arrivee(Plage&)’: Glacier.cc:19: erreur: ‘getLigne’ was not declared in this scope Glacier.cc:19: erreur: ‘getColonne’ was not declared in this scope
Voici le code :Glacier::Glacier(int ligne, int indice_colonne, int heure_arrivee, int heure_depart):Personne(indice_colonne, heure_arrivee, heure_depart),indice_ligne(ligne){ } int Glacier::getLigne(){ return indice_ligne; } int Glacier::getProfits(){ return profits; } void arrivee(Plage & plage){ plage.entree(getLigne(), getColonne()); }
getColonne a été écrite dans la classe Personne dont hérite Glacier
-
-
Est ce que les fonctions ont été déclarées dans ta classe ?
plop.hppclass plop{ void f(); void g(); //... };
plop.cppvoid plop::f(){ // ... } void plop::g(){ // ... }
Autre petite remarque tes méthodes getLigne et getProfits ne modifient pas this, donc tu devrais écrire en toute rigueurint Glacier::getLigne() const { return indice_ligne; } int Glacier::getProfits() const { return profits; }
Bonne chance -
Salut.
Tel quel, ton problème n'a rien à voir avec le message du debut.
le compilateur a raison, les fonctions getLigne(), getColonne() ne sont pas déclarer. Ce que tu as déclarer se sont les fonctions :
Glacier::getLigne(), Glacier::getColonne()
Tu as un problème de portée ! -
Non en fait il a implémenté des méthodes de Glacier qu'il n'a pas déclaré.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je ne voi pas ce qui te permet de dire ça ?
à mon sens, il n'a pas encore donné assez d'info, et pour moi arrivee est défini en dehors de toute classe. -
Je ne fais que lire le message d'erreur du compilateur :)
-