Consider the below code:
#include<iostream>
using namespace std;
class A
{
public:
A(){ cout <<"1";}
A(const A &obj) { cout <<"2";}
};
class B: virtual A
{
public:
B(){cout <<"3";}
B(const B & obj) {cout<<"4";}
};
class C: virtual A
{
public:
C(){cout<<"5";}
C(const C & obj) {cout <<"6";}
};
class D:B,C
{
public:
D() {cout<<"7";}
D(const D & obj) {cout <<"8";}
};
int main()
{
D d1;
cout<<"\n";
D d(d1);
}
The output of the program is below: 1357 1358 So, for line D d(d1) copy constructor of D class is getting called. During inheritance we need to explicitly call copy constructor of base class otherwise only default constructor of base class is called. I understood till here. My Problem: Now I want to call copy constructor of all base classes during "D d(d1)" execution. For that if I try below D(const D & obj) : A(obj), B(obj), C(obj) {cout <<"8";} Then I get this error: error: 'class A A::A' is inaccessible within this context
How to resolve the issue. I want copy constructor of A, B and C when copy constructor of D gets called. It might be very small change but I am not getting. Please help. Thanks in advance!
Aucun commentaire:
Enregistrer un commentaire