2011-08-03 19 views
0

我有以下的模板类如何与出默认的构造函数另一个类

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; 
}; 

我的问题是对象如何创建创建模板类ThreadPool与MyClass构造函数中的构造函数参数,因为我没有默认的构造函数?

+0

尽管你最近编辑过,你的问题仍然不清楚,因为你仍然没有解释你指的是缺少默认构造函数的类。这就是为什么我必须回答我看到的两种可能性。 – sbi

回答

2

假设你的意思是“因为我没有在ThreadPool默认构造函数:

MyClass::MyClass() 
: pool(&thrdFunc, 7, 42, 12) 
{ 
} 

假设你的意思是”因为我没有默认的构造函数中MyClass

MyClass有一个默认的构造函数只要你提供你自己的或者你不提供任何其他的构造函数。就像你的问题一样,它有一个编译器生成的默认构造函数。当然,这不会编译,因为编译器生成的默认构造函数只会调用所有(基类和数据成员)的默认构造函数,而唯一的数据成员是不提供默认构造函数的类。
所以你需要提供你自己的默认构造函数,如上例所示。

1

像其他任何成员一样 - 这不是特定于模板实例化类型 - 在MyClass的构造函数的初始化程序列表中。例如对于默认的构造函数:

MyClass::MyClass() 
    : pool(myFunction, myMinThread, myMaxThread, myExeCount) 
{} 
相关问题