Ich versuche, einen generischen Containertyp zu erstellen, um eine einzige gemeinsame Schnittstelle bereitzustellen, und verberge die internen Container, die ich benutze, da sie sich ändern können.Generischer Container in C++
Grundsätzlich habe ich Plugins, die Sammlungen von Elementen zurückgeben, und ich möchte nicht, dass die Plugins den Typ des Containers kennen, den mein Code verwendet.
Kann mir jemand in eine bessere Richtung als der Beispielcode unten zeigen?
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;
//...
}
Dank
kann ich. Tu das nicht. Verbringen Sie Ihre Zeit damit, Ihre App so zu gestalten, dass sie statisch getippte Container verwendet. – ybungalobill
Ich kann Sie in eine bessere Richtung weisen, sicher: ** Versuchen Sie nicht, dies zu tun **. Ernst. Es wird dir nichts bringen. Stimme der Erfahrung, die hier spricht. –
Warum der Downvote hier? Es ist eine vollkommen legitime Frage. Auch wenn die Antwort lautet "mach es nicht so", war es immer noch eine gültige Frage. – Tim