We recommend using Visual Studio 2017

Compiler Warning (level 4) C4623


The latest version of this topic can be found at Compiler Warning (level 4) C4623.

derived class`' : default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted

A constructor was not accessible in a base class and was not generated for the derived class. Any attempt to create an object of this type on the stack 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 C4623.

// C4623.cpp  
// compile with: /W4  
#pragma warning(default : 4623)  
class B {  
class C {  
class D : public B {};   // C4623 - to fix, make B's constructor public  
class E : public C {};   // OK - class C constructor is public  
int main() {  
   // D d;  will cause an error