Я пытаюсь понять решение проблемы алмаза (множественное наследование) в C++.Алмазный код наследования в C++ не работает должным образом
Я написал этот код, чтобы лучше понять решение, но он не ведет себя так, как ожидалось.
#include <stdio.h>
class A
{
public:
void Print()
{
printf("A\n");
}
};
class B : virtual public A
{
public:
void Print()
{
printf("B\n");
}
};
class C : virtual public A
{
public:
void Print()
{
printf("C\n");
}
};
class D : public B, public C
{
};
int main()
{
D d;
d.Print();
}
Visual Studio 2008 Express Edition вопит: ошибка C2385: неоднозначное доступ 'Print' 1> может быть 'Печать' в базе 'B' 1> или может быть 'Печать' в база 'C' ошибка C3861: 'Печать': идентификатор не найден
Может ли кто-нибудь рассказать мне, что мне здесь не хватает?
Если возможно, обновите до последней версии Visual Studio 2013 – TemplateRex