无法访问私有成员 - 原子

时间:2014-03-03 14:00:25

标签: c++

我有这段代码:

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:\programmierung\uncertainty\uncertainty\uncertainty\animator.h 113

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

2 个答案:

答案 0 :(得分:3)

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

#include <atomic>

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

Animator::Animator() : _running(false), _waiting(false) {
}

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

答案 1 :(得分:2)

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