This dans liste d'initialisation

This dans liste d'initialisation - C++ - Programmation

Marsh Posté le 05-05-2015 à 21:13:28    

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
Reply

Marsh Posté le 05-05-2015 à 21:13:28   

Reply

Marsh Posté le 06-05-2015 à 19:43:06    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed