我正在尝试创建一个以类作为模板的向量,该模板具有std::thread成员。但是,我不确定如何使用线程正确创建初始化列表。我目前拥有的是这样的:
class someclass
{
public:
std::thread thread;
int id;
someclass(std::thread init_thread, int init_id) :
thread(&init_thread),
id(init_id)
{}
};
但是,当我尝试在 VS2012 中编译它时,出现以下错误:
f:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(1152): error C2064: term 不计算为采用 0 个参数的函数,该函数指向以下行:_VARIADIC_EXPAND_0X(_CLASS_BIND, , , , )
如果我从线程(&init_thread)初始化中删除 & 我会得到这些错误: 1>f:\users...\project\source.cpp(43): error C2248: 'std::thread::thread' :无法访问在类 'std::thread' 1> f:\program files (x86)\microsoft visual studio 11.0\vc\include\thread(73) 中声明的私有成员:参见 'std::thread::thread' 的声明1> f:\program files (x86)\microsoft visual studio 11.0\vc\include\thread(32) : 参见“std::thread”的声明
所以,我的问题是:我将如何正确创建这样一个初始化列表?
稍后在代码中我也执行以下操作(仅供参考......)
void function()
{
// ....
std::vector<someclass> v_someclass;
v_someclass.push_back(someclass((std::thread(session, socket)),id));
// ....
}