C++:初始化原子变量错误:使用已删除的函数 'std::atomic<T>::atomic(const std::atomic<T>&)' [重复]

问题描述 投票:0回答:1

详情

我尝试像这样初始化变量

std::atomic<int> thread_num = std::atomic<int>(0);
,但是,它报告
error: use of deleted function 'std::atomic<int>::atomic(const std::atomic<int>&)'

重现代码

编译时,你会看到错误

#include <atomic>
#include <memory>

class test{
    private:
        std::atomic<int> thread_num = std::atomic<int>(0);
    public:
        test()=default;
        void addTask();
};

void test::addTask(){
    thread_num.fetch_add(1);
}

int main(){
    std::unique_ptr<test> t = std::make_unique<test>(test());
    t->addTask();
}

感谢您的帮助!

c++ class atomic unique-ptr
1个回答
0
投票

这一行:

std::atomic<int> thread_num(0);

使用无效语法来初始化成员。

应该是(使用统一初始化语法):

std::atomic<int> thread_num{0}; // note the curley braces
© www.soinside.com 2019 - 2024. All rights reserved.