创建具有私有构造函数的类模板的实例
Creating instance of class template having private constructor
我有一个类模板,其中包含一个私有构造函数和一个静态成员函数来创建类的对象。如何将类类型传递给函数 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>(...);
有一些方法可以支持这一点,但从您的帖子中不清楚您是否要这样做。
相关文章:
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 模板化类构造函数的模板实例化
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- C++初始化类实例时隐式调用类成员的构造函数
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- C++ 常量正确性/缺少支持常量和非常量实例的类的常量构造函数
- C++ - 使用另一个类的构造函数实例化一个对象
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++如何在类构造函数中实例化 std::array?
- 避免通过操作从私有构造函数间接实例化
- 类构造函数 - 没有构造函数的实例
- 没有构造函数模型的实例::模型匹配参数列表
- 是否允许使用初始值设定项列表将const数组引用实例化为构造函数参数
- C++:如何在结构中定义类实例.类具有参数化的构造函数
- 在保证复制的世界中构造函数实例化
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?
- C++构造函数的实例都与参数列表匹配
- 为什么GCC将对全局实例构造函数的调用放在不同的部分(取决于目标)
- 如果使单一实例构造函数受到保护,缺点是什么 - 继承 - C++11.