Когда я создаю объект DI, мне нужно включить конструкторы для A, B и C в список инициализатора.Есть ли способ сделать так, чтобы мне не нужны все три в списке инициализатора или нет?
Если я пытаюсь инициализировать D, используя только конструктор для BI, получаю ошибку, потому что у меня нетконструктор по умолчанию для A или C. Если я добавлю конструктор по умолчанию для A и CI, возникнут проблемы с повторной инициализацией i без значения.
#include <iostream>
using namespace std;
class A
{
int i;
public:
A(int ii) :
i(ii)
{}
~A() { }
int getI() { return i; }
};
class B : public virtual A
{
public:
B(int ii) :
A(ii)
{ }
~B() { }
};
class C : public virtual A
{
public:
C(int ii) :
A(ii)
{ }
~C() { }
};
class D : public B, public C
{
public:
D(int ii) :
A(ii), B(ii), C(ii)
{ }
~D() { }
};
int main()
{
D d(45);
cout << d.getI() << endl;
}