2012-04-28 6 views
-2

私は多重継承に関する質問があります。 私はクラスAを持っています。クラスAには、B、C、Dなどのいくつかの継承があります。クラスC++。複数の継承について

クラスXはクラスB、C、Dの継承元 クラスXのコンストラクタからクラスAのコンストラクタにパラメータを渡すにはどうすればよいですか?

答えて

2

Read thisthis

私はそれを理解する方法、あなたはXは、すべてのスーパークラスである。このように設定あなたのオブジェクトを、持っている:

X 
    /|\ 
B C D 
    \|/ 
    A 

あなたはコンストラクタをチェーンすることができます。したがって、クラスXのコンストラクタへの定義では、B、C、Dを構築するために必要なデータを渡し、必要に応じてXを構築します。

あなたがしたいことを例示するthis example C++ codeの記事を参照してください。

しかし、継承スキームにはいくつかの問題があることに注意してください。ほとんどの場合、継承の構成を好む方が良いです。定義しているオブジェクト間の関係は、BとX、CとXとDとXの間にどのような関係があるのか​​自分自身に問い合せたいと思うかもしれません。またはBはXを持っていますか? C? D? A.についても同じことを聞いてください。終了したら、コードを再編成して関連性のないようにすることができます。しかし、この組織がやむを得ないことが分かった場合は、オブジェクトがスーパークラスのデータをどのように管理するかについて、C++の信頼できるソースを参照することができます。この場合、AはXの3つのインスタンスを所有している可能性があります。AはB、C、Dの中で共通のX祖先を1つしか持たないことを保証するために余分な作業が必要になることがあります。 head ...

+0

B、C、およびDは、Xに対して1つのコピーしか持たないため、Aから実質的に継承する必要があります。 –

+0

もう1つの問題は、B、C、DコンストラクタがパラメータをXに渡さなければならないことです。 「祖父母」クラスの詳細を知ることは問題を求めています。 – juanchopanza

+0

Mooing Duck、 Adam Miller、 –