无法将对象分配给易失性对象

Tho*_*son 12 c++

我想将一个对象分配给同一类型的volatile对象,但是由于编译器错误而无法执行此操作.如何改变程序来实现呢?除了让它工作,为什么我不能直接做到这一点?

我在这里使用Visual Studio 2010作为编译器.

class A
{
public:
};

int _tmain()
{
    A a;
    volatile A va;
    va = a;        // compiler error:C2678 here
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*via 19

您需要A使用volatile限定符定义赋值运算符函数.

class A
{
    public:

    volatile A& operator = (const A& a) volatile
    {
      // assignment implementation
    }
};
Run Code Online (Sandbox Code Playgroud)

如果没有为类定义赋值运算符,C++将创建一个默认赋值运算符A& operator = (const A&);.但它不会使用volatile限定符创建默认赋值运算符,因此您需要明确定义它.

  • 如果您不控制“struct”类型,因为它来自平台头文件,那么如何干净地解决这个问题? (2认同)