Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 711
charlotte Avatar asked May 14 '14 06:05

charlotte


1 Answers

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)  {  } 
like image 101
CiaPan Avatar answered Sep 18 '22 18:09

CiaPan