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

From RAD Studio
Jump to: navigation, search

Go Up to Compiler Errors And Warnings (C++) Index

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.

class Base {
public:
   Base(int) {}
};
class Derived = public Base {
   Derived():Base(1) {}
}
// must explicitly call the Base constructor, or provide a lot more stuff on this line to view & verify.
// default constructor in Base.

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

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