부스트 다중 인덱스 컨테이너의 기능을 상속하는 기본 컨테이너 클래스를 만드는 방법을 찾고 있습니다. 이 기본 클래스에 다른 함수를 추가하고이 기본 클래스의 함수를 사용하고 부스트의 다중 인덱스 컨테이너를 사용할 수있는 다른 클래스를 만들 수 있기를 원합니다. C++에서 Boost multi index 컨테이너를 상속하는 방법이 있습니까?
내가 좋아하는 뭔가를 시도 :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