Вы можете использовать virtual
наследование, чтобы преодолеть такую проблему:
class B : virtual public A {
Теперь вы можете использовать A::fa()
просто у ребенка class C
.
void fc()
{
fa();
}
ОднакоОбычно я не вижу никакой практической необходимости наследовать class A
снова в class C
, когда B
уже public
союзник, наследующий A
.Итак, в вашем случае вы можете сделать это просто:
class C : public B {
Редактировать :
Если вы хотите 2 экземпляра для A
.тогда прямой экземпляр, который вы намереваетесь сделать, можно сделать объектом C
:
class C : public B {
A obj;
, поскольку наличие наследуемого A
напрямую не может быть использовано в любом случае.Вы не можете объявить какой-либо указатель или ссылку на него в области действия C
.