我试图理解 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 速成版大喊:错误 C2385:“打印”1> 的模糊访问可能是基础“B”中的“打印”1>,或者可能是基础“C”中的“打印”错误 C3861:“打印” : 未找到标识符
谁能告诉我我在这里缺少什么?