Почему это работаетМножественное наследование и недоступный конструктор по умолчанию
class CL1{};
class CL2:private virtual CL1{};
class CL3:private virtual CL1{};
class CL4:public CL2,public CL3
{
public:
CL4():CL2(),CL3(){}
};
int main()
{
CL4 cl4;
return 0;
}
, но если я называю конструктор виртуального базового класса явно
CL4():CL1(),CL2(),CL3(){}
, то он не работает? P.S. Компилятор: https://ideone.com/HuHlCB
Вы не наследуете cl4 из cl1, так зачем вам нужно вызвать конструктор cl1? – Omid
Во-первых, вы, возможно, также должны добавить точное сообщение об ошибке, которое вы получаете при компиляции – MultiVAC
Частное виртуальное наследование действительно не имеет смысла (поскольку вы просто испытываете себя). –