Compiler Warning (level 4) C4626
The latest version of this topic can be found at Compiler Warning (level 4) C4626.
derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted
An assignment operator was deleted or not accessible in a base class and was therefore not generated for a derived class. Any attempt to assign objects of this type will cause a compiler error.
This warning is off by default. See Compiler Warnings That Are Off by Default for more information.
The following sample generates C4626 and shows how to fix it:
// C4626
// compile with: /W4
#pragma warning(default : 4626)
class B
{
// public:
B& operator = (const B&)
{
return *this;
}
};
class D : public B
{
}; // C4626 - to fix, make B's copy constructor public
int main()
{
D m;
D n;
// m = n; // this line will cause an error
}