E2251 Standardkonstruktor zum Initialisieren der Basisklasse 'klasse' nicht gefunden (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Wenn in C++ eine abgeleitete Klasse 'klasse2' erstellt wird, muss eine Basisklasse 'klasse1' schon existieren.

Falls der Konstruktor für 'klasse2' keinen Konstruktor von 'klasse1' (als Teil des Kopfes von 'klasse2') angibt, muss es einen Konstruktor Klasse1::Klasse1() für die Basisklasse geben.

Dieser parameterlose Konstruktor heißt Standardkonstruktor.

Der Standardkonstruktor wird üblicherweise vom Compiler bereitgestellt, es sei denn, Sie haben selbst einen Konstruktor für die Klasse 'klasse1' definiert.

In diesem Fall müssen Sie selbst einen Konstruktor bereitstellen.



 class Base {
 public:
    Base(int) {}
 };
 class Derived = public Base {
    Derived():Base(1) {}
 }
 // Sie müssen den Konstruktor der Basisklasse explizit aufrufen oder
 // einen Standardkonstruktor zur Verfügung stellen



Klassenelemente mit Konstruktor müssen in der Initialisierungsliste der Klasse initialisiert werden:



 class A {
 public
    A( int );
 };
 class B {public:
 
    A a;
    B() : a( 3 ) {}; //ok
 };