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 :

probl�me d'encapsulation de classes et d'acc�s aux m�thodes


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par d�faut probl�me d'encapsulation de classes et d'acc�s aux m�thodes
    Bonjour,

    Voici un cas d'�cole afin d'illustrer le plus simplement possible mon probl�me:

    Je rencontre des difficult�s � passer un pointeur de class1 au constructeur de class2.

    L'objectif est que class2 puisse appeler une m�thode de class1.


    Voici le code:

    class1.h

    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
    #ifndef CLASS1_H
    #define CLASS1_H
     
    #include <iostream>
    #include "class2.h"
     
    using namespace std;
     
    class class1
    {
    public:
        class1();
     
        void methodAlpha();
     
    private:
        class2 *m_obj_class2;
    };
     
    #endif // CLASS1_H


    class1.cpp

    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
    #include "class1.h"
     
    class1::class1()
    {
        cout << "instanciated class 1!" << endl;
        m_obj_class2 = new class2(this);  // J'instancie un objet de type class2, en passant un pointeur sur class1
     
        methodAlpha();
    }
     
    void class1::methodAlpha()
    {
        cout << "class1::methodAlpha() can call class2::methodBeta()" << endl;
        m_obj_class2->methodBeta();
    }



    class2.h

    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
    #ifndef CLASS2_H
    #define CLASS2_H
     
    #include <iostream>
    #include "class1.h"                  // J'inclus le prototype de class1...
     
    using namespace std;
     
    class class2
    {
    public:
        class2(class1 *parent);        // ...afin que le type soit reconnu ici
     
        void methodBeta();
     
    private:
        class1 *m_obj_class1;        // ...et ici
    };
     
    #endif // CLASS2_H


    class2.cpp

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "class2.h"
     
    class2::class2(class1* parent)
    {
        m_obj_class1 = parent;
        cout << "instanciated class 2!" << endl;
    }
     
    void class2::methodBeta()
    {
        m_obj_class1->methodAlpha();
    }


    � la compilation, j'obtiens les deux erreurs suivantes:

    class2.h:12:19: error: expected ')' before '*' token
    class2.h:17:5: error: 'class1' does not name a type

    J'ai comment� temporairement le #include "class1.h" du fichier class2.h, juste pour voir, et j'obtiens les m�mes erreurs.
    Je pense qu'il y a un conflit avec les inclusions suivantes:
    dans class1.h > #include "class2.h".
    dans class2.h > #include "class1.h"Du coup j'ai tent� ceci en m�me lieu et place, c'est pareil...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    #ifndef CLASS1_H
    #define CLASS1_H
    #include "class1.h"
    #endif

    Comment proc�deriez vous pour faire fonctionner ce code?



    PS: C'est �trange, habituellement je travaille avec des classes Qt (QWidget, QDialog, ...) et je suis s�r d'avoir d�j� effectu� des choses du genre, sans souci...

  2. #2
    Invit�
    Invit�(e)

Discussions similaires

  1. R�ponses: 3
    Dernier message: 25/04/2014, 00h16
  2. Gestion d'objet encapsul� et acc�s aux m�thodes.
    Par Ragnarok666 dans le forum D�buter
    R�ponses: 7
    Dernier message: 13/03/2009, 14h37
  3. Acc�s aux m�thodes priv�es d'une classe par la reflection
    Par Aurazed dans le forum G�n�ral Dotnet
    R�ponses: 1
    Dernier message: 07/07/2008, 15h41
  4. Probl�me d'acc�s aux m�thodes d'une classe
    Par RR instinct dans le forum Langage
    R�ponses: 5
    Dernier message: 26/06/2006, 14h51
  5. [TOMCAT] JSP probl�me d'acc�s aux m�thodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    R�ponses: 3
    Dernier message: 22/05/2004, 14h02

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