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 :
- Foo::Foo(Bar *p)
- {
- someInit();
- p->getUniqueKey(this)
- }
|
La fonction getUniqueKey fait grosso modo une chose simple :
Code :
- void Bar::getUniqueKey(Foo *p)
- {
- p->key=lastKey++;
- m_mapKeyFooInstance.insert(pair<int, Foo *> (lastKey, p));
- }
|
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
---------------
Un blog qu'il est bien