我想将一个对象分配给同一类型的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限定符创建默认赋值运算符,因此您需要明确定义它.
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |