我有一个与C ++中的多继承相关的基本问题。如果我有如下所示的代码:
struct base1 {
void start() { cout << "Inside base1"; }
};
struct base2 {
void start() { cout << "Inside base2"; }
};
struct derived : base1, base2 { };
int main() {
derived a;
a.start();
}
,它给出了以下编译错误:
1>c:\mytest.cpp(41): error C2385: ambiguous access of 'start'
1> could be the 'start' in base 'base1'
1> or could be the 'start' in base 'base2'
是否无法使用派生类对象从特定基类调用函数start()
?
我现在不知道用例,但是..仍然!
答案 0 :(得分:76)
a.base1::start();
a.base2::start();
或者如果你想特别使用一个
class derived:public base1,public base2
{
public:
using base1::start;
};
答案 1 :(得分:4)
当然!
a.base1::start();
或
a.base2::start();