[C++] Utiliser le pointeur this dans le constructeur

Utiliser le pointeur this dans le constructeur [C++] - C++ - Programmation

Marsh Posté le 19-04-2009 à 00:01:29    

Bonjour !
 
J'ai lu un peu de doc sur l'utilisation du pointeur this dans le constructeur, et il semble (d'apres ce que j'ai compris) que ce soit fonctionnel... cependant, les modifications que j'ai apportees a mon code (un peu gros pour etre mis la ^^ ) font tellement tout crasher que je me pose quand meme serieusement la question.
 
Voila ce que je fait : (Bar est un pointeur this vers un autre objet, qui lui est construit depuis belle lurette )

Code :
  1. Foo::Foo(Bar *p)
  2. {
  3.      someInit();
  4.      p->getUniqueKey(this)
  5. }


 
La fonction getUniqueKey fait grosso modo une chose simple :  
 

Code :
  1. void Bar::getUniqueKey(Foo *p)
  2. {
  3.     p->key=lastKey++;
  4.     m_mapKeyFooInstance.insert(pair<int, Foo *> (lastKey, p));
  5. }


 
key est un simple entier, appartenant a la classe foo (en train d'etre construite donc, dans cette implementation) et m_mapKeyFooInstance une map (stl) permettant de faire le lien entre une cle et le pointeur vers l'objet.
 
Question : c'est legal _toujours_ ? Quel que soit le compilateur ?
L'emplacement pointe par this (de Foo) ne va pas se deplacer parce que le constructeur est pas tout a fait termine ? Ma map _doit_ rester integre et key toujours assignee (a ce que je vois c'est parfait pour la clef)
 
De ce que j'ai compris, c'est une implementation correcte...mais merci de bien m'eclairer si j'ai raison ou non  :D


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 19-04-2009 à 00:01:29   

Reply

Marsh Posté le 19-04-2009 à 09:10:50    

une fois rentré dans les {} du constructeur, this est valide. Il ne l'ai pas toujours dans al liste d'initialisation.

Reply

Marsh Posté le 19-04-2009 à 16:59:53    

Joel F a écrit :

une fois rentré dans les {} du constructeur, this est valide. Il ne l'ai pas toujours dans al liste d'initialisation.


Merci beaucoup, c'est ce qu'il me semblait... Il me reste a trouver le(s) source(s) de mes crashs hallucinants  :D


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

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