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' の 'Print' 1> またはベース 'C' の 'Print' である可能性があります エラー C3861: 'Print' : 識別子が見つかりません
ここで何が欠けているのか教えてください。