创建具有私有构造函数的类模板的实例

Creating instance of class template having private constructor

本文关键字:实例 构造函数 创建      更新时间:2023-10-16

我有一个类模板,其中包含一个私有构造函数和一个静态成员函数来创建类的对象。如何将类类型传递给函数 CreateInstance,以便可以使用类类型调用构造函数?

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

使用

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

有一些方法可以支持这一点,但从您的帖子中不清楚您是否要这样做。