Search code examples
c++constructorinitializationderived-class

Error : base class constructor must explicitly initialize parent class constructor


I am new to c++. When I try to compile the code below , I get this error

constructor for 'child' must explicitly initialize the base class 'parent' which does not have a default constructor child::child(int a) {

here is my class

#include<iostream>
using namespace std;

class Parent
{   
public :
    int x;
    Parent(int a);
    int getX();
};
Parent::Parent(int a)
{
    x = a;
}
int Parent::getX() 
{
    return x;
}
class Child : public Parent
{
public:
    Child(int a);   
};
Child::Child(int a) 
{
    x = a;
}
int main(int n , char *argv[]) 
{

}

Why I am getting this error ? How can I resolve it ? Thanks in advance


Solution

  • The parent class has an explicit constructor, so compiler will not add an implicit 'empty' constructor to it. Additionally your constructor has a parameter, so compiler can not generate an implicit call to it. That's why you must do it explicitly.

    This way:

     child::child(int a) : parent(a)
     {
     }