【发布时间】:2013-09-25 19:40:03
【问题描述】:
我正在尝试理解 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:“打印”:找不到标识符
谁能告诉我我在这里缺少什么?
【问题讨论】:
-
如果可能,升级到最新的 Visual Studio 2013
标签: c++ multiple-inheritance diamond-problem