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()
を呼び出すことができる方法はありませんか?
今のところユースケースはわかりませんが、それでも!
a.base1::start();
a.base2::start();
または、具体的に使用したい場合
class derived:public base1,public base2
{
public:
using base1::start;
};
承知しました!
a.base1::start();
または
a.base2::start();