[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

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