2009-01-30 5 views
1

J'ai une classe dont l'objet doit être créé sur le tas. Y at-il une meilleure façon de le faire autre que ceci:Contrôle de la création d'objet

class A 
{ 
public: 
    static A* createInstance(); //Allocate using new and return 
    static void deleteInstance(A*); //Free the memory using delete 

private: 
    //Constructor and destructor are private so that the object can not be created on stack 
    A(); 
    ~A(); 
}; 

Répondre

3

C'est à peu près le modèle standard pour faire le tas-seul objet.

On ne peut pas vraiment simplifier beaucoup, sauf que vous pouvez simplement rendre le destructeur privé sans forcer l'utilisation d'une méthode de fabrication pour la création.

4

Je suggère de ne rendre que le constructeur privé et de renvoyer un shared_ptr à l'objet à la place.

class A 
{ 
public: 
    static sharedPtr<A> createInstance(); //Allocate using new and return 

private: 
    //Constructor is private so that the object can not be created on stack 
    A(); 
}; 
Questions connexes