gpt4 book ai didi

c++ - 不能在 ctor 初始化列表中调用 std::atomic::store

转载 作者:行者123 更新时间:2023-11-28 02:00:48 25 4
gpt4 key购买 nike

当我尝试在初始化列表中调用 std::atomic::store 时,出现以下编译器错误:g++ -std=c++11 test_function_call_in_ctor.cc

test_function_call_in_ctor.cc:在构造函数“TestA::TestA()”中:
test_function_call_in_ctor.cc:7:17: error: expected ‘(’ before ‘.’ token
TestA() : run_.store(true) {
^
test_function_call_in_ctor.cc:7:17: 错误:'.' 标记前应有'{'

源代码如下:

class TestA {
public:
TestA() : run_.store(true) {
cout << "TestA()";
if (run_.load()) {
cout << "Run == TRUE" << endl;
}
}
~TestA() {}
private:
std::atomic<bool> run_;
};
int main() {
TestA a;
return 0;
}

对这个问题有什么想法吗?非常感谢。

最佳答案

初始化列表指定成员的构造函数参数。您不能像您尝试的那样使用成员函数。然而,std::atomic<T>有一个构造函数采用 T作为争论的值(value):

TestA(): run_(true) { ... }

由于对象正在构建中,此时它不可能被另一个线程使用,即不需要使用 store()。无论如何。

关于c++ - 不能在 ctor 初始化列表中调用 std::atomic::store,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695146/

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