【发布时间】:2016-05-07 19:41:06
【问题描述】:
在以下示例中:
class A {
public:
virtual void f() { cout << "a" << endl; }
virtual void h() { cout << "A" << endl; }
};
class s1 : public A {
public:
virtual void f() { cout << "s1" << endl; }
};
class s2 : public A {
public:
virtual void h() { cout << "s2" << endl; }
};
class GS : public s1, public s2 {
public:
};
int main()
{
s1 *q = new GS;
q->h();//no problem
GS a;
a.h();//error
}
为什么a.h(); 会给出歧义错误而q->h(); 却没有?
*q 没有GS 的实例,这会导致同样的歧义问题吗?
【问题讨论】:
标签: c++ c++11 multiple-inheritance ambiguity