我想将一个对象分配给相同类型的volatile对象,但是没有使用编译器错误.如何改变程序呢?除了让它工作,为什么我不能直接做?
我在这里使用Visual Studio 2010作为编译器.
class A { public: }; int _tmain() { A a; volatile A va; va = a; // compiler error:C2678 here return 0; }
解决方法
您需要使用volatile限定符定义A的赋值运算符函数.
class A { public: volatile A& operator = (const A& a) volatile { // assignment implementation } };
如果您没有为类定义赋值运算符,C将创建A& operator =(const A&);但是它不会使用volatile限定符创建一个默认赋值运算符,因此您需要明确定义它.