RAD Studio |  |

E2251: Cannot find default constructor to initialize base class 'class' (C++)

Whenever a C++ derived class 'class2' is constructed, each base class 'class1' must first be constructed.

If the constructor for 'class2' does not specify a constructor for 'class1' (as part of 'class2's' header), there must be a constructor class1::class1() for the base class.

This constructor without parameters is called the default constructor.

The compiler will supply a default constructor automatically unless you have defined any constructor for class 'class1'.

In that case, the compiler will not supply the default constructor automatically--you must supply one.

Copy Code

    class Base {
    public:
       Base(int) {}
    };
    class Derived = public Base {
       Derived():Base(1) {}
    }
    // must explicitly call the Base constructor, or provide a
    // default constructor in Base.

Class members with constructors must be initialized in the class' initializer list, for example:

Copy Code

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

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!