3

私は今まで本当にやったことのないことをやろうとしています。私は基本的に3つのクラスを持っています。クラス A は純粋な仮想メソッドを持つ抽象クラスであり、クラス B はクラス A の仮想メソッドと同じ名前のメソッドを含む独自のクラスです。クラス C ですべてを結び付けようとしています。クラス B と A を C で継承し (多重継承)、クラス B のメソッドを使用してクラス A でそれらを実装します。このようにして、モジュラー アプローチを作成します。以下の例は、私のコードの非常に単純化されたバージョンです。

class A {
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};

class B { //B implements A.A() and A.B()
int methodA() { return 0; }; 
int methodB() { return 0; };
};

class C : A, B {
int methodC() { return 0; }; //C implements A.C()
};

クラス C をコンパイルできますが、C のクラスを構築しようとすると、 「次のメンバーのために抽象クラスをインスタンス化できません: int methodA()' : is abstract」new C()というコンパイラ メッセージが表示されます。

クラスCで多重継承を介してクラスBを使用してクラスAを実装する方法はありますか?

編集:クラスBを具体的に保つことが望まれます。

4

1 に答える 1

-1

メソッドごとの定型文でそれを行うことができます。

class A {
public:
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};

class B { //B implements A.A() and A.B()
public:
int methodA() { return 0; }; 
int methodB() { return 0; };
};

class C : public A, public B {
public:
int methodA() { return B::methodA(); }
int methodB() { return B::methodB(); }
int methodC() { return 0; }; //C implements A.C()
};

デモ: http://ideone.com/XDKDW9

于 2013-08-22T21:13:11.330 に答える