Создание объекта управления - PullRequest
1 голос
/ 30 января 2009

У меня есть класс, чей объект должен быть создан в куче. Есть ли лучший способ сделать это, кроме этого:

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();
};

Ответы [ 3 ]

4 голосов
/ 30 января 2009

Я бы предложил сделать только конструктор закрытым и вместо него вернуть shared_ptr.

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(); 
};
3 голосов
/ 30 января 2009

Это в значительной степени стандартный шаблон для создания объекта только для кучи.

Не может быть сильно упрощено, за исключением того, что вы можете просто сделать деструктор приватным, не заставляя использовать фабричный метод создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...