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

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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    ?
    Je comprend pas non plus. Normalement c'est pareil.
    Donne nous un exemple concret que l'on puisse compiler.
    1. 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
  2. Modérateur
    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
    1. Contributeur
      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 !
      1. Modérateur
        Non en fait il a implémenté des méthodes de Glacier qu'il n'a pas déclaré.
        1. Contributeur
          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.
          1. Modérateur
            Je ne fais que lire le message d'erreur du compilateur :)