Создание экземпляра шаблона класса с закрытым конструктором - PullRequest
0 голосов
/ 23 января 2019

У меня есть шаблон класса с личным конструктором и статической функцией-членом для создания объекта класса.Как передать тип класса в функцию CreateInstance, чтобы конструктор можно было вызывать с типом класса?

template <class T> class DelegateHandler: 
{
private:
   DelegateHandler(...);
public:
   static DelegateHandler* CreateInstance(...)
   { 
       DelegateHandler* pDeleGateHandler = new DelegateHandler<T>(...);
       return pDeleGateHandler;
   }
}  

1 Ответ

0 голосов
/ 23 января 2019

Нет необходимости использовать

DelegateHandler* pDeleGateHandler = new DelegateHandler<T>(...);

в функции-члене static.Это может быть просто

DelegateHandler* pDeleGateHandler = new DelegateHandler(...);  // No <T>

, а затем вы можете использовать:

DelegateHandler<int>* var1 = DelegateHandler<int>::CreateInstance(...);
DelegateHandler<double>* var2 = DelegateHandler<double>::CreateInstance(...);

и т. Д.

Если вы хотите использовать

DelegateHandler<int>* var = DelegateHandler<double>::CreateInstance<int>(...);

Есть способы поддержать это, но из вашего поста не ясно, хотите ли вы это сделать.

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