我有以下模板类
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
,因为我没有默认构造函数?
答案 0 :(得分:2)
假设你的意思是“我在ThreadPool
中没有默认构造函数:
MyClass::MyClass()
: pool( &thrdFunc, 7, 42, 12 )
{
}
假设你的意思是“我在MyClass
中没有默认构造函数:
MyClass
有一个默认构造函数,只要您提供自己的构造函数或者不提供任何其他构造函数。正如你的问题所在,它有一个编译器生成的默认构造函数。当然,这不会编译,因为编译器生成的默认构造函数只会调用所有(基类和)数据成员的默认构造函数,而唯一的数据成员pool
属于不具有的类提供默认构造函数
因此,您需要提供自己的默认构造函数,如上例所示。
答案 1 :(得分:1)
与任何其他成员一样 - 这不是特定于模板实例化类型 - 在MyClass构造函数的初始化列表中。例如,对于默认构造函数:。
MyClass::MyClass()
: pool(myFunction, myMinThread, myMaxThread, myExeCount)
{}