ジェネリックコンテナタイプを作成して、単一の共通インターフェイスを提供し、使用している内部コンテナは変更される可能性があるため非表示にしようとしています。
基本的に、アイテムのコレクションを返すプラグインがありますが、コードが使用しているコンテナーのタイプをプラグインに認識させたくありません。
誰かが私を以下のサンプルコードよりも良い方向に向けることができますか?
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;
//...
}
ありがとう