で複数の基底クラスから継承:コメントの部分を使用するときはOKですC++、私はこのコードを試してみました同じ仮想関数名
class A
{
virtual void foo() = 0;
};
class B
{
virtual void foo() = 0;
};
class C : public A, public B
{
//virtual void A::foo(){}
//virtual void B::foo(){}
virtual void A::foo();
virtual void B::foo();
};
void C::A::foo(){}
void C::B::foo(){}
int main()
{
C c;
return 0;
}
が、私はクラス宣言の外に定義を記述しようとすると、コンパイラはエラーを報告します。 私はMSVC11コンパイラを使用していますが、誰もこれを書く方法を知っていますか? コードをcppファイルに移動する必要があります。 (下記参照)関数は名前とパラメータの種類に基づいて、基本クラスの仮想関数をオーバーライドする
class A {
virtual void foo() = 0;
};
class B {
virtual void foo() = 0;
};
class C : public A, public B {
virtual void foo();
};
void C::foo(){}
void C::A::foo(){}
void C::B::foo(){};
int main() {
C c;
return 0;
}
コメント部分はまた、GCCで動作していない2つの異なる
A::foo
ためのオーバーライドと継承の別の層を導入するよりも、他の異なる動作をするB::foo
を持ってする方法はありません。 –それはまったく意味がありません。 'virtual void foo();'と '* once * 'だけでなければなりません。 –
どのように 'A'、' B'、 'C'を_useしたいですか?多くの可能性があります:[例1](http://ideone.com/KlVTgv)、[例2](http:// ideone。 –