[英]c++11 vector of threads as class member
有人可以解釋為什么我不能寫這樣的線程向量:
//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);
};
相反,編譯器迫使我使用這個看起來很奇怪的方法:
class AI {
static vector<std::thread> Helpers(std::thread);
};
編譯第一個時得到的錯誤信息是:
error: 'MAXTHREADSAMOUNT' is not a type
它與向量是靜態無關,但我注意到,如果向量未在類或結構對象中聲明,則第一種方法有效。
所以我的問題是為什么vector需要通過構造函數顯式傳遞存儲的類型而不是使用模板中已經聲明的類型?
你不能內聯初始化靜態數據成員,第二個版本也是錯誤的,它實際上是一個函數聲明,它返回一個線程向量並接受一個線程。 只需像你想象的那樣在課堂外初始化它。
vector<std::thread> AI::Helpers(MAXTHREADSAMOUNT);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.