Compiler Error C2512
Collapse the table of content
Expand the table of content
This documentation is archived and is not being maintained.

Compiler Error C2512

'identifier' : no appropriate default constructor available

No default constructor is available for the specified class, structure, or union. The compiler supplies a default constructor if user-defined constructors are not provided.

If you provide a constructor that takes a non-void parameter, and you want to allow your class to be created with no parameters, you must also provide a default constructor. The default constructor can be a constructor with default values for all parameters.

The following sample generates C2512:

// C2512.cpp
// C2512 expected
struct B {
   B (char *);
   // Uncomment the following line to resolve.
   // B() {};

int main() {
   B b; 

The following sample shows a more subtle C2512:

// C2512b.cpp
// compile with: /c
struct S {
   struct X;

   void f() {
      X *x = new X();   // C2512 X not defined yet


struct S::X {};

struct T {
   struct X;
   void f();

struct T::X {};

void T::f() {
   X *x = new X();
© 2016 Microsoft