E2352 Instanz der abstrakten Klasse 'klasse' kann nicht erzeugt werden (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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