IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Appel d'une class a une autre


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Appel d'une class a une autre
    Bonjour a tous.
    J'ai un petit soucis, j'aimerais pouvoir accéder à un menu qui est déclaré dans une class différente par laquelle je l'appelle.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    class classe
    {
           private :
                   ......
                   .......
     
           public :
                   classe();
                   void menuE();
    };
     
    class ecole
    {
           private :
                   ......
                   .......
     
           public :
                   ecole();
                   void menuG();
                   void menuP();
                   void menuC();
    };
     
     
    void ecole::menuG()
    {
     int choix;
     do
     {
         cout<<endl;
         cout<<" Gestion de l'ecole °°"<<endll;
         cout<<"°° 1 - Gestion des profs       °°"<<endl;
         cout<<"°° 2 - Gestion des classes     °°"<<endl;
         cout<<"°° 3 - Gestion des eleves      °°"<<endl;
         cout<<"Votre choix : ";
         cin>>choix;
          switch(choix)
            {
             case 1: menuP();
             break;
             case 2: menuC();
             break;
             case 3: ............  // Je ne sais pas comment l'appeler
             break;
            }
     }
     while(choix != 0);
    }

  2. #2
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    (tout dépend de ce que tu veux faire)

    Soit tu ajoute un attribut classe dans ton école, soit tu met la méthode MenuE statique, soit tu créé un objet temporaire classe dans ton case, le temps d'appeler le MenuE()
    Nullius in verba

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Ben soit tu crées une instance de la classe dont tu souhaites appeler la fonction, soit tu rend cette fonction statique.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    J'ai déclaré la fonction en statique.
    mais j'ai cette erreur :

    cannot call member function `void classe::ajouter_eleve()' without object

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Soit tu as une instance de ta classe "classe" nommée X et tu l'appelles via X.ajouter_eleve() ou avec un pointeur (Y) sur un instance de "classe" tu feras Y->ajouter_eleve()


    Déclarer une méthode en static permet d'appeler une méthode sans qu'aucune instance de la classe n'existe.
    C'est par exemple pratique pour voir le nombre d'instance de la classe à n'importe quel moment.

    Déclarer un attribut en statique permet d'avoir un attribut avec une valeur commune pour chacune des instances de la classe.

    /!\ Un méthode statique ne peut en aucun cas modifier ou lire la valeur d'un attribut non statique et ne peut non plus appeler une fonction non-statique.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Voici un exemple de ce que tu veux faire qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    //classe.hpp
    class classe
    {
           private :
     
     
     
           public :
                   classe();
                   static void menuE();
    };
     
     
    //classe.cpp
    #include "classe.hpp"
    #include <iostream>
     
    classe::classe()
    {
     
    }
     
    void classe::menuE()
    {
        std::cout << "test";
    }
     
     
    //ecole.hpp
    class ecole
    {
           private :
     
     
     
           public :
                   ecole();
                   void menuG();
     
    };
     
     
    //ecole.cpp
    #include "ecole.hpp"
    #include "classe.hpp"
    #include <iostream>
     
    ecole::ecole()
    {
     
    }
     
    void ecole::menuG()
    {
        using namespace std;
     int choix;
     do
     {
         cout << endl;
         cout<<" Gestion de l'ecole °°"<<endl;
         cout<<"°° 1 - Gestion des profs       °°"<<endl;
         cout<<"°° 2 - Gestion des classes     °°"<<endl;
         cout<<"°° 3 - Gestion des eleves      °°"<<endl;
         cout<<"Votre choix : ";
         cin>>choix;
          switch(choix)
            {
             case 1:
             case 2:
             case 3: classe::menuE();
             break;
            }
     }
     while(choix != 0);
    }
     
     
     
    //main.cpp
    #include "ecole.hpp"
     
    using namespace std;
     
    int main()
    {
        ecole e;
        e.menuG();
        return 0;
    }
    Voilà n'oublie pas de nous dire qu'est-ce qui n'allais pas dans ta version, que l'on sache d'où te venait ton erreur.
    Nullius in verba

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/07/2011, 11h51
  2. Réponses: 14
    Dernier message: 10/09/2009, 19h08
  3. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  4. Réponses: 3
    Dernier message: 29/04/2008, 14h14
  5. Réponses: 2
    Dernier message: 26/11/2007, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo