gpt4 book ai didi

作为类成员的线程的 c++11 vector

转载 作者:行者123 更新时间:2023-11-30 01:55:51 34 4
gpt4 key购买 nike

有人能解释一下为什么我不能写这样的线程 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);
};

相反,编译器强制我使用这种看起来很奇怪的方法:

class AI {
static vector<std::thread> Helpers(std::thread);
};

我在编译第一个时得到的错误信息是:

error: 'MAXTHREADSAMOUNT' is not a type

它与静态 vector 无关,但我注意到如果 vector 未在类或结构对象中声明,则第一种方法有效。

所以我的问题是为什么 vector 需要存储的类型通过构造函数显式传递而不是使用已经在模板中声明的类型?

最佳答案

你不能内联初始化静态数据成员,第二个版本也是错误的,它实际上是一个函数声明,返回一个线程 vector 并接受一个线程。只需像您应该的那样在类外初始化它。

vector<std::thread> AI::Helpers(MAXTHREADSAMOUNT);

关于作为类成员的线程的 c++11 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20341828/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com