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 :

Utiliser l'objet appelant dans l'objet appelé


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut Utiliser l'objet appelant dans l'objet appelé
    Bonjour,

    Mon titre peu sembler un peu barbarre, aussi je vais détailler mon soucis.
    Je dispose de deux classes A et B.
    A déclare un objet B dans son .h et l'initialise son constructeur (avec un new()).
    Mon soucis c'est que une des fonctions de mon objet B doit mettre à jour une variable public de mon objet A.

    J'ai bien trouvé ce tip dans la FAQ qui explique comment faire une référence croisée, et donc déclarer un objet A dans mon objet B... Mais moi ce n'est pas un nouvel objet A qu'il me faut, c'est juste celui qui a construit l'objet B .

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    J'ai finalement trouvé une solution (Je bataille là-dessus depui ce matin ).

    Il me suffit de modifier le constructeur de ma classe B pour qu'il prenne en paramètre un pointeur sur un objet de classe A.
    L'objet de classe A se passe une référence sur l'objet de classe B lorsqu'il le construit (mon_objet_b = new B(this).

    Ensuite on peut faire appel aux méthodes de l'objet A depuis l'objet B.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    N'oublie pas de cliquer sur

  4. #4
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    par exemple, passe une référence ou pointeur de A (ta fabrique?) dans le constructeur de B appelé lors du new B(... )

    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
     
    #include <iostream>
    #include <memory>
    using namespace std;
     
    struct B;
    struct A{
      A() : incr(0) {}
      int incr;
      B* Create();
    };
     
    struct B {
      B( A* a ) : a_( a ) {}
      A* a_;
      void incr() const { ++a_->incr; }
    };
     
    B* A::Create() { return new B(this); }
     
    int main() {
      A a;
      auto_ptr<B> b( a.Create() );
      b->incr();
     
      cout << a.incr << endl;
    }

    argh.. croisé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] utilisation d'un ActiveX et d'objets externes dans Windev
    Par courdi95 dans le forum WinDev
    Réponses: 1
    Dernier message: 11/01/2013, 06h14
  2. Réponses: 0
    Dernier message: 29/11/2010, 10h43
  3. Tableau de valeurs dans un objet et tableau d'objets
    Par emilie_t dans le forum Flash
    Réponses: 1
    Dernier message: 16/06/2007, 17h22
  4. [JNI] : Obtenir les champs d'un objet inclus dans un objet
    Par jojo29 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2006, 13h36
  5. [debutant] run() dans l'objet thread ou l'objet cible ?
    Par slim dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 18/01/2006, 23h06

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