[C]Appel de méthodes d'une même classe

Fermé
sting - 27 févr. 2007 à 08:56
 sting - 1 mars 2007 à 19:32
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.
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

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2007 à 13:02
?
Je comprend pas non plus. Normalement c'est pareil.
Donne nous un exemple concret que l'on puisse compiler.
0
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
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
28 févr. 2007 à 02:17
Est ce que les fonctions ont été déclarées dans ta classe ?

plop.hpp
class plop{
  void f();
  void g();
  //...
};

plop.cpp
void plop::f(){
  // ...
}

void plop::g(){
  // ...
}

Autre petite remarque tes méthodes getLigne et getProfits ne modifient pas this, donc tu devrais écrire en toute rigueur
int Glacier::getLigne() const {
  return indice_ligne;
}

int Glacier::getProfits() const {
  return profits;
}

Bonne chance
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
28 févr. 2007 à 08:51
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 !
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
28 févr. 2007 à 10:04
Non en fait il a implémenté des méthodes de Glacier qu'il n'a pas déclaré.
0

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

Posez votre question
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 mars 2007 à 08:49
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.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
1 mars 2007 à 10:53
Je ne fais que lire le message d'erreur du compilateur :)
0
Mon problème a été résolu.
0