Rendre une référence vers une instance créé ds un méthode

Rendre une référence vers une instance créé ds un méthode - C++ - Programmation

Marsh Posté le 17-12-2002 à 16:59:56    

A force d'alterner Java et C++, j'm'y perds moi.
Comme faire ça en C++ (une espèce de méthode factory) :

Code :
  1. static MaClasse* MaClasse:NewMaClasse ()
  2. {
  3.    MaClasse* inst = new MaClasse();
  4.    inst->MaMethode1("blabla" );
  5.    inst->MaMethode2("blibli" );
  6.    if (...) // les ... ça veut dire : divers tests dont on se tape
  7.       return (inst); // là, ça merde, je sais, ms comment faire.
  8.  
  9.    return NULL;
  10. }


Message édité par El_gringo le 17-12-2002 à 17:00:08
Reply

Marsh Posté le 17-12-2002 à 16:59:56   

Reply

Marsh Posté le 17-12-2002 à 17:02:50    

Ben oui, parce que ma référence "MaClasse* inst" ne veut lpus rien dire au moment du return, non ?


Message édité par El_gringo le 17-12-2002 à 17:03:05
Reply

Marsh Posté le 17-12-2002 à 17:05:57    

MaClasse* inst = new MaClasse();
  alloc dynamique, reste vivante jusqu'à ce que tu la delete
 
MaClasse inst;
  alloc sur la pile, reste vivante jusqu'à la sortie de la fonction
 
donc ton code est correct.

Reply

Marsh Posté le 17-12-2002 à 17:07:43    

youdontcare a écrit :

MaClasse* inst = new MaClasse();
  alloc dynamique, reste vivante jusqu'à ce que tu la delete
 
MaClasse inst;
  alloc sur la pile, reste vivante jusqu'à la sortie de la fonction
 
donc ton code est correct.


 
Je sais que mon instance créée par new MaClasse() reste valide, mais je pensais que je perdait le pointeur vers cette instance au moment du return (que inst pointait vers n'importe quoi...)

Reply

Marsh Posté le 17-12-2002 à 17:11:24    

:??: l'objet reste vivant, la variable inst qui contient la valeur pointant vers l'objet est détruite en sortie (elle est locale).

Reply

Marsh Posté le 17-12-2002 à 17:19:33    

youdontcare a écrit :

:??: l'objet reste vivant, la variable inst qui contient la valeur pointant vers l'objet est détruite en sortie (elle est locale).


 
Non, c rien, je plane, laisses tomber !  :D  
Merci :hello:

Reply

Sujets relatifs:

Leave a Replay

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