Я пытаюсь создать общий тип контейнера, чтобы обеспечить единый общий интерфейс, а также скрыть внутренние контейнеры, которые я использую, поскольку они могут изменяться.
В основном У меня есть плагины, которые возвращают коллекции элементов, и я не хочу, чтобы плагины знали о типе контейнера, который использует мой код.
Может ли кто-нибудь указать мне лучшее направление, чем приведенный ниже пример кода?
template<class C, typename I>
class Container
{
public:
//...
void push(const I& item)
{
if(typeid(C) == typeid(std::priority_queue<I>))
{
std::priority_queue<I>* container = (std::priority_queue<I>*)&_container;
container->push(item);
}
if(typeid(C) == typeid(std::list<I>))
{
std::list<I>* container = (std::list<I>*)&_container;
container->push_back(item);
}
else
{
//error!
}
};
private:
C _container;
//...
}
Спасибо