E2251 Impossible de trouver un constructeur par défaut pour initialiser la classe de base 'classe' (C++)

De RAD Studio
Aller à : navigation, rechercher

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

Lorsque la classe dérivée C++ 'classe2' est construite, chaque classe de base 'classe1' doit d'abord être construite.

Si le constructeur pour 'classe2' ne spécifie aucun constructeur pour 'classe1' (dans l'en-tête de 'classe2'), il doit exister un constructeur classe1::classe1() pour la classe de base.

Ce constructeur sans paramètre est appelé constructeur par défaut.

Le compilateur fournit automatiquement un constructeur par défaut sauf si vous avez défini un constructeur pour 'classe1'.

Dans ce cas, le compilateur ne fournit pas automatiquement le constructeur par défaut ; c'est à vous de le faire.



 class Base {
 public:
    Base(int) {}
 };
 class Derived = public Base {
    Derived():Base(1) {}
 }
 // doit appeler explicitement le constructeur de base ou fournir
 // un constructeur par défaut dans Base.



Les membres de classes avec un constructeur doivent être initialisés dans la liste des initialisateurs de la classe, par exemple :



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