Почему данный код не работает?
class A {
public:
virtual void print()const { std::cout << "class A" << std::endl; }
};
class B : public virtual A {
public:
void print()const { std::cout << "class B" << std::endl; }
};
class C : public virtual A {
public:
void print()const { std::cout << "class C" << std::endl; }
};
class D : public B, public C {
public:
using C::print;
};
Виртуальное наследование введено, чтобы функция, которая наследуется через B и через C, определялась однозначно. Но при этом метод нельзя определить виртуальным. Ведь тогда в классах B и С он определен по-разному, как компилятору определять, какой вариант брать? Страуструп об этом пишет очень подробно. На практике редко используют виртуальное наследование из-за таких проблем.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости