私は、ブーストマルチインデックスコンテナの機能を継承する基本コンテナクラスを作成する方法を探しています。私は、この基本クラスに他の関数を追加し、この基本クラスの関数を使用し、boostのマルチインデックスコンテナを利用できる他のクラスを作成できるようにします。C++でBoostマルチインデックスコンテナを継承する方法はありますか?
私のような何か試してみました:
template < class D, E >
class BoostModelContainer : public boost::multi_index_container<D, E>
{
public:
D* AddItem(const D& item)
{
//code here
}
};
をしてからのような基本クラスを継承し、他のクラスを作成しました:
class ExampleContainer : public BoostModelContainer< CItem,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<
boost::multi_index::tag<id_tag>, boost::multi_index::member< CItem, ItemId, &CItem::m_id > >,
boost::multi_index::ordered_unique<
boost::multi_index::tag<name_tag>, boost::multi_index::member< CItem, String, &CItem::m_name > >
>
>
しかし、これはコンパイルされないでしょう。誰か他のアイデアを持っているか、これを動作させる方法を知っていますか?
ありがとうございました!
ドン」あなたの特定のケースを十分に知っていますが、とにかくこれをここにドロップします:[相性よりも組成を優先しますか?](http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance) – user4581301
私はしません構図はうまくいくと思いますか?私は、異なるマルチインデックスキー構造を持つ多くのさまざまなコンテナを作成しようとしています。そして、私はすべてのコンテナが各コンテナに関数を置くのではなく、基本関数にアクセスできるようにしたい。そして私はそれぞれのコンテナをマルチインデックスコンテナにすることを望んでいます。 –
これはちょうど "あなたの選択肢を検討する"コメントです。一方通行か他方通話かを問うには十分ではありません。コンテナからの継承が適切な場合もありますが、通常は継承が適切ではありません。 – user4581301