Compiler Warning (level 4) C4626


For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

'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