我正在尝试创建一个通用容器类型来提供一个通用接口,并隐藏我正在使用的内部容器,因为它们可能会发生变化。
基本上我有返回项目集合的插件,我不希望插件知道我的代码正在使用的容器类型。
谁能指出我比下面的示例代码更好的方向?
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;
//...
}
谢谢