无法访问私有成员 - 原子
Cannot access private member - atomic
我有这个代码:
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。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 用于访问容器<T>数据成员的正确 API
- 内置函数可查看CPP中的成员变量
- 如何调用原子成员函数指针
- 访问具有另一个类中的原子私有变量的类的成员
- 在汇总中初始化原子成员
- 无法访问私有成员 - 原子
- 具有std::原子成员变量的类的复制构造函数/赋值运算符出错
- 初始化静态原子成员变量
- 0-原子的初始化是否保证将值成员设置为0
- 复制具有原子成员的类的构造函数
- 复制包含原子成员的对象的地址
- c++,c++11,std::原子成员函数
- 是否可以使用std::atomic将类的复杂成员函数变为原子?
- Boost原子类使初始值不同于成员初始化列表
- c++ 如何访问原子非 POD 成员变量