2016-04-08 14 views
1

私にはがあり、サブクラスA class B: public Aが必要です。どのように私はこのクラスから継承することができますが、他の誰もこの2つのクラスから再び継承することはできません。 もし私がclass Aを作った場合、最終BはAから継承することができません。クラスから一度だけ継承

+2

私はあなたが望むものが不明です。あなたはBがAから継承できるようにしたいが、どちらからも継承できる新しいクラスはない? – David

+1

'A'と' B'クラスを一つのクラスにマージし、そのクラスを 'final'として宣言したいかもしれません。 – jotik

答えて

2

私はコメントしました:私はあなたが望むものが不明です。 BAから継承できますが、いずれかのクラスから継承できる新しいクラスはありませんか?その前提の上に、Aの個人と友人をBにして、Bを最終的にすることです。

私はあなたが何をしているのか分かりませんが、デザインは賢明ですが、これは悪いデザインです。しかし、それはあなたの質問に答えます。

5

C++では、あるクラスだけが別のクラスから継承することはできません。クラスがfinal(したがって継承不可)であるか、そうではありません。

Aはコンストラクタをプライベートに宣言し、BのフレンドをAにしてください。しかし、それは他のユーザーがタイプAのオブジェクトを作成することを困難にします。

class B; 
class A { 
    // everything's private 
    friend class B; // << except for class B 
}; 

class B final // << final prevents from further inheritance 
: A { 
    public: 
    // What you want to publish ... 
}; 

以前のように述べたけれども、あなたがより多くのクラスを持っている場合を除き、私はclass Aのためにその多くのポイントが表示されていない。(私はそれが良いデザイン、実際にはないと思うが)

2

ジャストアイデアインスタンシエーションはclass Bです。

関連する問題