E2352 Impossible de créer une instance de la classe abstraite 'classe' (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Les classes abstraites (celles qui contiennent des fonctions virtuelles pures) ne peuvent être utilisées directement, mais uniquement en dérivé.

Lorsque vous dérivez une classe de base abstraite, avec l'intention de créer des instances de cette classe dérivée, vous devez outrepasser chaque fonction virtuelle pure de la classe de base de la façon exacte dont elle est déclarée.

Par exemple :

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;   // erreur

L'erreur se produit car vous n'avez pas redéfini la fonction virtuelle dans laquelle twoex peut agir sur les objets const de la classe. Nous avons créé une nouvelle fonction qui agit sur les objets autres que const. Ceci se compilerait sans erreur :

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