E2352 Instanz der abstrakten Klasse 'klasse' kann nicht erzeugt werden (C++)
Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index
Abstrakte Klassen (solche mit abstrakten Funktionen) können nicht direkt verwendet werden, d. h., es kann keine Instanz erzeugt werden. Es kann von ihnen nur abgeleitet werden.
Wenn Sie von einer abstrakten Basisklasse ableiten und dabei die Absicht haben, Instanzen dieser abgeleiteten Klasse zu instantiieren, dann müssen Sie jede der abstrakten Funktionen der Basisklasse in der deklarierten Form überschreiben.
Ein Beispiel:
class A {
public:
virtual myex( int ) = 0;
virtual twoex( const int ) const = 0;
};
class B : public A {
public:
myex( int );
twoex( const int );
};
B b; // Fehler
Da die virtuelle Funktion twoex nicht überschrieben, sondern stattdessen eine neue erzeugt wurde, die mit nicht konstanten Objekten arbeitet, entsteht dieser Fehler. Folgendes ist richtig:
class A {
public:
virtual myex( int ) = 0;
virtual twoex( const int ) const = 0;
};
class B : public A {
public:
myex( int );
twoex( const int ) const;
};
B b; // ok