Übergabe von spezialisiertem Template als Parameter
-
Hallo,
ich habe ein kleines Problem.
Ich skizziere das mal kurz:
template<class T> MyContainer{ } class B: public A{ } void func(MyConatiner<A>& cont){ }Warum kann ich die Methode nicht mit einem MyContainer<B>-Objekt aufrufen?
MyContainer<B> cont; func(cont); <--- Das geht leider nichtWie kann ich das Problem beheben?
Was würdet ihr machen?Vielen Dank schonmal,
Frank
-
Hi,
template <class T> void func( /*const*/ MyContainer<T>& cont) { }
-
Hi KasF,
danke, daran hab ich auch gedacht...
und was mach ich, wenn func ne Member-Funktion ist?
Gruß,
Frank
-
Frank24 schrieb:
und was mach ich, wenn func ne Member-Funktion ist?
Du lässt es genauso

-
Hi,
als Member-Funktion funtioniert das ja auch wunderbar

Jetzt hätte ich die Member-Funktion aber auch gerne virtual.
Das scheint ja leider (verständlicherweise) nicht (direkt) zu gehen.class A { }; class B : public A{ }; class C { public: template <class T> void func(const std::vector<T>& vec){} // <-- virtual }; int main(){ std::vector<B> vec; C c; c.func(vec); return 0; }Wie krieg ich das denn auch noch hin?
Vielen Dank für eure Hilfe,
Frank
-
kuez gesagt: garnicht.
templates können nicht virtuell sein, musst du dir was anderes überlegen.
-
Hi otze,
genau das hab ich mir gedacht/befürchtet.
Was würdest du / ihr denn für den einfachen Fall vorschlagen.
Gruß,
Frank
-
nvm