我有以下模板类
template <typename threadFuncParamT >
class ThreadPool
{
// number of threads to be launced initially and added to thread pool.
ThreadPool( pThreadFunc pFunction, RtsInt16_t minThreads, RtsInt16_t maxThreads, RtsInt16_t maxExecCount);
};
现在我想使用另一个类的对象
struct myStruct
//...
};
class MyClass
{
private:
ThreadPool<myStruct *> pool;
};
我的问题是如何在 MyClass 构造函数中使用构造函数参数创建 ThreadPool
,因为我没有默认构造函数?
最佳答案
假设您的意思是“因为我在 ThreadPool
中没有默认构造函数:
MyClass::MyClass()
: pool( &thrdFunc, 7, 42, 12 )
{
}
假设您的意思是“因为我在 MyClass
中没有默认构造函数:
MyClass
有一个默认构造函数,只要您提供自己的构造函数或不提供任何其他构造函数。正如您的问题一样,它有一个编译器生成的默认构造函数。当然,那不会编译,因为编译器生成的默认构造函数会简单地调用所有(基类和)数据成员的默认构造函数,而唯一的数据成员 pool
是一个类不提供默认构造函数。
所以你需要提供自己的默认构造函数,如上例所示。
关于c++ - 如何在没有默认构造函数的情况下在另一个类中创建模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926538/