Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1200 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  This dans liste d'initialisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

This dans liste d'initialisation

n°2257420
kray
Bad show?
Posté le 05-05-2015 à 21:13:28  profilanswer
 

Bonjour,
 
J'ai la situation suivante :

Code :
  1. //Foo.h
  2. #include "bar.h"
  3. class Foo
  4. {
  5.     Bar _bar;
  6. }


 

Code :
  1. //Bar.h
  2. class Foo;
  3. class Bar{
  4.   Foo* _foo
  5.   Bar(Foo* foo);
  6. }


 

Code :
  1. //Foo.cpp
  2. Foo::Foo() : _bar(this)
  3. {
  4. //initialise des valeurs membres que va récupérer le constructeur de _bar via un getVal() qui retourne un pointeur sur une donnée membre de Foo
  5. }


 
Je travaille en C++11
Mon code fonctionne (sur la dizaine d'essais fait), mais je trouve ça assez miraculeux que le constructeur de bar soit appelé après que le constructeur de foo ai été exécuté (puisque j'arrive à récupérer dans le constructeur de bar des valeurs de foo).
Est-ce que j'ai du bol et ça peut crasher à tout moment?
 
J'ai trouvé vu un vieux post qui dit que this n'est pas forcément valable dans la liste d'init. C’est toujours vrai en C++11?


Message édité par kray le 05-05-2015 à 21:15:33

---------------
I guess my real ennemy is me
mood
Publicité
Posté le 05-05-2015 à 21:13:28  profilanswer
 

n°2257512
theshockwa​ve
I work at a firm named Koslow
Posté le 06-05-2015 à 19:43:06  profilanswer
 

il faut juste comprendre qu'au moment où tu passes this, ton instance n'est pas complètement construite, donc utiliser cette instance est illégal, C++11 ou pas.
 
Après, si tu veux garder un pointeur sur ton instance de Foo, pourquoi pas, tant que tu ne touches pas à l'objet lui-même, ca devrait le faire, oui.
 


---------------
last.fm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  This dans liste d'initialisation

 

Sujets relatifs
Liste fichier expression régulièreAfficher le nouveau enregistrement dans la liste.
Liste déroulante liées[Python] Occurence d'une liste
déverser des éléments d'une liste à l'autreTRI TABLEAU à partir liste déroulante
Création d'une liste d'éléments liés à un id inputAffichage sous-liste
Faire une liste extensibleRecuperer la classe des objets d une liste
Plus de sujets relatifs à : This dans liste d'initialisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR