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 :

[N00b] Interactions de classes


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut [N00b] Interactions de classes
    Salut à tous, voila un ptit problème auquel je suis confronté. J'ai déclaré 2 classes, je schématise le code ici:

    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
     
     
    class classe1
    {
     
    //Constructeur
    classe1(classe2 hello){
     
    hello.methode2();
    }
     
    }//Fin classe1
     
    class classe2
    {
     
    void methode(){
    classe1 obj = new classe1(this)
     
    }
     
    void methode2(){
     
    ...
    }
     
     
    }//Fin classe2
    Ptite expli:

    La classe2 créé une instance de classe1, et je voudrais qu'une fois classe1 créée, elle refasse appel plusieurs fois a une méthode de classe1 dans l'instance qui la créé. Il faut donc passer a classe2 l adresse de classe1 d'ou le this, mais cela ne marche pas!

    Auriez vous une ptite idée ?

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Bonjour,

    tout d'abord : http://c.developpez.com/faq/cpp/?pag...erence_croisee

    ensuite, le constructeur de ta classe 1 demande un OBJET de la classe 2 (d'ailleurs une référence constante aurait été mieux) et non pas un POINTEUR.


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Merci pour le lien, mais après correction cela ne fonctionne pas:

    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
     classe2; //Changement 1, pour la reconnaissance à la compil
     
    class classe1
    {
     
    //Constructeur
    classe1(classe2* hello){//Passage du pointeur
     
    hello->methode2(); //Ligne 6
    }
     
    }//Fin classe1
     
    class classe2
    {
     
    void methode(){
    classe1 obj = new classe1(this)
     
    }
     
    void methode2(){
     
    ...
    }
     
     
    }//Fin classe2
    Ceci ne fonctionne toujours pas, il me dit que le type classe2 n'est pas reconnu à la ligne 6...Bizarre bizarre!

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Plusieurs choses :

    1. faire un copier/coller correct du code, ça facilite les choses pour tester (style mettre "public" et les ";" ou il faut)
    2. ta déclaration anticipée est incorrecte
    3. une déclaration anticipée permet de déclarer des pointeurs sur objet de la classe, pas d'utiliser les fonctions de cette dernière (puisque les fonctions ne sont pas déclarées)

    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
    class classe2; //Changement 1, pour la reconnaissance à la compil
     
    class classe1
    {
     
    //Constructeur
    public:
    classe1(classe2* hello);
     
    };//Fin classe1
     
    class classe2
    {
    public:
    void methode(){
    classe1 * obj = new classe1(this);
     
    }
     
    void methode2(){
     
    }
     
     
    };//Fin classe2
     
    classe1::classe1(classe2* hello){//Passage du pointeur
     
    hello->methode2(); //Ligne 6
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Le code est trop long pour que je puisse le poster ici...En revanche, je comprends ta methode de redéfinition, malheureseument j'ai un problème de compilation:

    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
     
    class inputFrameListener
    {
    [...]
     
    bool frameStarted(const FrameEvent& evt);
    }
     
    class anaglyphe()
    {
     
    anaglyphe(){
    clavier= new inputFrameListener(mWindow,0,this);
    }
     
    }
     
    inputFrameListener::bool frameStarted(const FrameEvent& evt){
     
          return ! mInputDevice->isKeyDown( KC_ESCAPE );
    }
    Les erreurs sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:\Documents and Settings\Yohan\Mes documents\Visual Studio Projects\anaglyphe\include\anaglyphe.h(233): error C2589: 'bool' : jeton non conforme à droite de '::'
    c:\Documents and Settings\Yohan\Mes documents\Visual Studio Projects\anaglyphe\include\anaglyphe.h(233): error C2059: erreur de syntaxe : '::'
    c:\Documents and Settings\Yohan\Mes documents\Visual Studio Projects\anaglyphe\include\anaglyphe.h(233): error C2143: erreur de syntaxe : absence de ';' avant '{'
    c:\Documents and Settings\Yohan\Mes documents\Visual Studio Projects\anaglyphe\include\anaglyphe.h(233): error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?)
    Et si je retire la redéfinition du type retour bool, il gueule aussi !

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    attention au bool (sans jeu de mots)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool inputFrameListener::frameStarted(const FrameEvent& evt)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Merci bcp ca a l air d'être ca... Un jour j'apprendrai le C++;

Discussions similaires

  1. Interaction entre classes. Utilisation du "self"
    Par santaflam dans le forum Général Python
    Réponses: 11
    Dernier message: 01/09/2013, 00h11
  2. interaction entre classes
    Par BahCmoa dans le forum Langage
    Réponses: 2
    Dernier message: 04/02/2013, 13h34
  3. [Débutant] Interactions entre classes
    Par ledany dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2011, 10h27
  4. [MySQL][ADOdB] Interaction classes ADOdB / classes personelles
    Par Looping2605 dans le forum Requêtes
    Réponses: 10
    Dernier message: 12/03/2007, 21h43
  5. [Language]Interaction entre class
    Par LordBob dans le forum Langage
    Réponses: 10
    Dernier message: 14/12/2005, 10h14

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