2016-05-12 6 views
1

クラスA、Bを継承しています(ただし、すべてのクラスが両方のクラスを継承しているわけではありません)。複数の継承と従属親クラスを持つデザイン

コードは次のようになります。

class 1: public A, public B 
{ 
    getVar() { return mVar; } 
} 

class 2: public A, public B 
{ 
    getVar() { return mVar; } 
} 

class A 
{ 
    protected: int mVar; 
} 

class B 
{ 
    virtual int getVar()=0; 
} 

ここで私はクラスBのクラスAから変数を取得しています。しかし、そのために、私は両方のAから派生されているすべてのクラス(classN)でgetVar() { return mVar; }を実装しており、 B.
デフォルトの実装を与えることができ、派生クラスすべてに同じコードを書く必要がないように、正しい設計アプローチが必要です。

+0

ここでアドバイスを得るには、あなたの例をもっと "本当の" *にしなければなりません。(実際には 'class 1: ..あなたの例では...できるだけコードを作る)*。これはどのように使用されますか? getVar()はBからのみ継承するクラスに対してどのように振る舞いますか? Aから継承し、ポインタがAにアップキャストされている場合、 'A *'で ' - > getVar()'を呼び出せますか?基本的には、複数の継承を検討している場合は、なぜそれを行うのかというユースケースを本当に釘付けにする必要があります。 – HostileFork

答えて

1

AとBを継承するクラスCを定義し、そこにgetVar() { return mVar; }を実装します。次に、以前にAとBから継承したCを継承することができます。

関連する問題