Reputation: 21625
I want to assign an object to volatile object in the same type, but failed to do so with compiler error. How to change the program to make it? Besides to make it to work, why i can't do it directly?
I used Visual Studio 2010 as compiler here.
class A
{
public:
};
int _tmain()
{
A a;
volatile A va;
va = a; // compiler error:C2678 here
return 0;
}
Upvotes: 15
Views: 4677
Reputation: 17
I have encounted the same question. For example:
struct A { int i; }
volatile A a;
A b;
a = b; // C2678 here.
I found this method to resolve it:
const_cast<A &>(a) = b;
Upvotes: -1
Reputation: 53299
You need to define an assignment operator function for A
with the volatile
qualifier.
class A
{
public:
volatile A& operator = (const A& a) volatile
{
// assignment implementation
}
};
If you don't define an assignment operator for a class, C++ will create a default assignment operator of A& operator = (const A&);
. But it won't create a default assignment operator with the volatile
qualifier, so you need to explicitly define it.
Upvotes: 22