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

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1874804
guepe
J'ai du noir sur la truffe ?
Posté le 19-04-2009 à 00:01:29  profilanswer
 

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
mood
Publicité
Posté le 19-04-2009 à 00:01:29  profilanswer
 

n°1874821
Joel F
Real men use unique_ptr
Posté le 19-04-2009 à 09:10:50  profilanswer
 

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

n°1874920
guepe
J'ai du noir sur la truffe ?
Posté le 19-04-2009 à 16:59:53  profilanswer
 

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

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

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

 

Sujets relatifs
Thread, quand les utiliser ?utiliser le & dans un jcl comme etant un caractere et non variable
Interfacer Python et C++[C#] upload sur serveur + erreur 550
Interface C/Ada + SDL[C#] aide sur un regex.
[C] Comment éviter les warnings pour "déclaration implicite de"pointeur et fonction langage C
exercice pointeur et fonction langage C 
Plus de sujets relatifs à : [C++] Utiliser le pointeur this dans le constructeur


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