无法访问私有成员 - 原子

Cannot access private member - atomic

本文关键字:成员 原子 访问      更新时间:2023-10-16

我有这个代码:

class Animator{
public:

private:
    bool                _running;
    atomic<bool>            _waiting;
};

Visual Studio说Error 2 error C2248: 'std::atomic<bool>::operator =' : cannot access private member declared in class 'std::atomic<bool>' d:programmierunguncertaintyuncertaintyuncertaintyanimator.h 113

我看不出这个类和一个只有原子作为成员的最小类之间的区别,它有效。

您错过了实例变量的初始化:

#include <atomic>
class Animator
{
public:
    Animator();
private:
    bool _running;
    std::atomic<bool> _waiting;
};
Animator::Animator() : _running(false), _waiting(false) {
}

std::atomic没有赋值运算符,但如果使用没有默认值的默认构造函数,则将使用此运算符。

很可能最小测试类的赋值运算符从未使用过,因此不会实例化。如果要显式调用其赋值运算符,则应看到相同的错误。一个 std::atomic 不支持分配给另一个 std::atomic。