Универсальный контейнер в C ++

Я пытаюсь создать общий тип контейнера, чтобы обеспечить единый общий интерфейс, а также скрыть внутренние контейнеры, которые я использую, поскольку они могут изменяться.

В основном У меня есть плагины, которые возвращают коллекции элементов, и я не хочу, чтобы плагины знали о типе контейнера, который использует мой код.

Может ли кто-нибудь указать мне лучшее направление, чем приведенный ниже пример кода?

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;
 //...
}

Спасибо

10
задан James McNellis 1 January 2011 в 08:12
поделиться