Я ищу способ создания базового класса контейнера, который наследует функциональность контейнера с несколькими индексами boost. Я хочу иметь возможность добавлять другие функции в этот базовый класс и создавать другие классы, которые могут использовать функции этого базового класса и использовать мультииндексный контейнер boost.Есть ли способ наследовать от Boost multi index container в C++?
Я пытался что-то вроде:
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