我有这段代码:
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
我看不出这个类和一个只有原子作为成员的最小类之间的区别,这是有效的。
答案 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。