我们知道我们可以使用虚拟继承来解决菱形问题。
例如:
class Animal // base class
{
int weight;
public:
int getWeight() { return weight;};
};
class Tiger : public Animal { /* ... */ };
class Lion : public Animal { /* ... */ };
class Liger : public Tiger, public Lion { /* ... */ };
int main()
{
Liger lg ;
/*COMPILE ERROR, the code below will not get past
any C++ compiler */
int weight = lg.getWeight();
}
当我们编译这段代码时,我们会得到一个歧义错误。现在我的问题是编译器如何在内部检测到这种歧义问题(菱形问题)。