Compilerfehler C2512

Aktualisiert: November 2007

Fehlermeldung

'Bezeichner' : Kein geeigneter Standardkonstruktor verfügbar
'identifier' : no appropriate default constructor available

Für die angegebene Klasse, Struktur oder Union steht kein Standardkonstruktor zur Verfügung. Der Compiler generiert nur dann einen Standardkonstruktor, wenn keine benutzerdefinierten Konstruktoren angegeben werden.

Wenn Sie einen Konstruktor bereitstellen, an den Parameter übergeben werden müssen, und Sie gleichzeitig eine Instanziierung der betreffenden Klasse ohne Parameter zulassen möchten, müssen Sie zusätzlich einen Standardkonstruktor bereitstellen. Ein Konstruktor kann als Standardkonstruktor fungieren, wenn er Standardwerte für alle Parameter enthält.

Im folgenden Beispiel wird C2512 generiert:

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

int main() {
   B b; 
}

Das folgende Beispiel zeigt einen weniger offensichtlichen Fehler 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();
}