Element-Typen eines Template-Arguments
-
Hallo Forum!
Ich habe ein Problem mit Templates und breche es nun einmal auf die hier herunter, sodass die Typen nicht zu kompliziert werden:template<class Container = std::vector> class Test { private: Container::iterator i; };Allein das sorgt bei meinem C++-Compiler für einige Fehler.
Ist es denn nicht möglich auf Element-Typen eines Template-Arguments zuzugreifen? Oder muss man die vielleicht irgendwie deklarieren?Grr, ich will Zugriff auf diese Typen haben!

Ich hoffe mir kann jemand helfen.
Danke...
The User
-
Weil du dein Problem so schön gekürtzt hast, gibts auch gleich eine Lösung.

template<class Container = std::vector> class Test { private: typename Container::iterator i; };Typename, weil der Compiler nicht wissen kann, was Container sein soll. Also musst du es ihm sagen.

btw:
Das nächste mal die Fehlermeldung posten..
-
drakon schrieb:
Typename, weil der Compiler nicht wissen kann, was iterator sein soll. Also musst du es ihm sagen.

-
KasF schrieb:
drakon schrieb:
Typename, weil der Compiler nicht wissen kann, was iterator sein soll. Also musst du es ihm sagen.

Huch. Hast Recht. Bin gerade ein wenig verwirrt. Habe einen richtig geilen Job gefunden.

-
Danke sehr!
C++ enttäuscht mich nie, nur bei Templates muss man manchmal nachfragen.
(Java dagegen enttäuscht mich sehr oft...
)
Ich hatte schon befürchtet, das ginge nicht. typename kannte ich garnicht in diesem Zusammenhang, hatte nur typedef und using bei Vererbung ausprobiert.
Nochmal vielmals danke!Viele liebe Grüße
The UserEdit:
Das Prinzip ist so oder so klar geworden, aber damit sich keiner wundert, dass das mit dem std::vector nicht geht: std::vector ist ja ein Template, also für das Beispiel entweder std::vector<int> oder template<typename T, template<typename, typename> class = std::vector> nehmen.