

#include <iostream>
public A
{
public:
void f()
{
std::cout << "A::f()" << std::endl;
}
};
public B : public A
{
public:
void f()
{
std::cout << "B::f()" << std::endl;
}
};
public C : public A
{
public:
void f()
{
std::cout << "C::f()" << std::endl;
}
};
public D : virtual public B, public C
{
};
然后D的对象直接调用f()也会出错,会有二义性,解决方法是加上类的修饰符。
如
D d;
d.B::f();
d.A::f();