我需要有关易失物体的建议。这是我的班级
class A
{
private:
volatile unsigned long count;
public:
A & operator = (unsigned long number) { count = number; return *this; }
};
我创建了一个声明为volatile
的类的实例volatile A myClass;
当我使用“=”运算符来赋值时,我得到编译器错误
myClass = 5;
如何使用“this”指针来实现此功能?或者这甚至是问题?
答案 0 :(得分:0)
第一个问题是你不能使用volatile
指针,引用或实例来调用非volatile
成员函数。这类似于const
,如果您的对象为const
,或者您的指针或引用属于const
限定类型,则只能调用const
成员函数。因此必须使您的会员成为volatile
。
第二个问题是,由于您的成员函数将成为volatile
,this
指针也将是volatile
,这意味着*this
是volatile A &
}。您将无法将*this
绑定到A &
,这是您的运算符的返回类型,因为volatile A &
无法绑定到A &
。同样,这就像const
,您无法将const A &
绑定到A &
。解决方案是将运算符的返回类型更改为volatile A &
。
您的运营商应如下所示:
volatile A & operator= (unsigned long number) volatile
{
count = number;
return *this;
}