C++ c++;11作为类成员的线程向量
有人能解释为什么我不能写这样的线程向量吗:C++ c++;11作为类成员的线程向量,c++,multithreading,oop,c++11,vector,C++,Multithreading,Oop,C++11,Vector,有人能解释为什么我不能写这样的线程向量吗: //This is declared in a namespace const uint MAXTHREADSAMOUNT = std::thread::hardware_concurrency(); //... //declared in the same namespace class AI { static vector<std::thread> Helpers(MAXTHREADSAMOUNT); }; 这与向量是静态的
//This is declared in a namespace
const uint MAXTHREADSAMOUNT = std::thread::hardware_concurrency();
//...
//declared in the same namespace
class AI {
static vector<std::thread> Helpers(MAXTHREADSAMOUNT);
};
这与向量是静态的无关,但是我注意到,如果向量不是在类或结构对象中声明的,那么第一个方法可以工作
所以我的问题是,为什么vector需要存储的类型通过构造函数显式传递,而不是使用模板中已经声明的类型?您不能内联初始化静态数据成员,第二个版本也是错误的,它实际上是一个函数声明,返回线程向量并获取线程。只需在类外初始化它,就像您所希望的那样
vector<std::thread> AI::Helpers(MAXTHREADSAMOUNT);
向量AI::Helpers(MAXTHREADSAMOUNT);
不能内联初始化静态数据成员,第二个版本也是错误的,它实际上是一个函数声明,返回线程向量并获取线程。只需在类外初始化它,就像您所希望的那样
vector<std::thread> AI::Helpers(MAXTHREADSAMOUNT);
向量AI::Helpers(MAXTHREADSAMOUNT);
Ahh,谢谢你,我忘了初始化。这似乎已经清除了错误,谢谢,我忘记了初始化。这似乎已经消除了错误
vector<std::thread> AI::Helpers(MAXTHREADSAMOUNT);