一般的なコンテナタイプを作成して、共通の1つのインタフェースを提供すると同時に、使用している内部コンテナを非表示にしようとしています。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;
//...
}
おかげであなたは「共通のインターフェースを」書いた
できます。それをしないでください。アプリケーションの設計に時間を費やして、静的に型指定されたコンテナを使用するようにします。 – ybungalobill
私はより良い方向にあなたを指すことができます、確かに:**これをやろうとしないでください**。真剣に。それはあなたに何も得られません。ここで話す経験の声。 –
なぜここにdownvote?それは完全に正当な質問です。答えが「このようにしないでください」であっても、それは依然として有効な質問でした。 – Tim