Problem mit Templatisierung
-
Hi,
ich habe da ein kleines Problem. Ich muss innerhalb eines Projektes des
öfteren mal STL-Container abspeichern. Daher wollte ich die Streamoperatoren
entsprechend überladen. Nun meint der Compiler, dass die Variable vit in Zeile 10 nicht deklariert wäre.
Wenn ich in Zeile 10 statt vector<T>::const_iterator z.Bsp vector<int>::const_iterator schreibe funktioniert es (halt nur für int-Vektoren).
Aber dann kann ich das mit dem Template direkt sein lassen.#include <iostream> #include <vector> using namespace std; template <class T> ostream& operator << (ostream& out, const vector<T>& rhs) { size_t size=rhs.size(); out << size << " "; for(vector<T>::const_iterator vit=rhs.begin(); vit != rhs.end(); ++vit) { out << *vit << " "; } return out; } int main() {return 0;}Mal schauen was euch dazu einfällt.
viele Grüße, Sedran.
PS: Beim vector könnte ich obengenanntes Problem zwar umgehen, indem ich die for-Schleife über richtige Zahlen laufen lasse, aber bei den anderen Containern wie map, set, list, usw. bin ich auf die Iteratoren angewiesen.
-
Versuch's mal mit typename:
template <class T> ostream& operator << (ostream& out, const vector<T>& rhs) { size_t size=rhs.size(); out << size << " "; for( typename vector<T>::const_iterator vit=rhs.begin(); vit != rhs.end(); ++vit) { out << *vit << " "; } return out; }
-
Vielen Dank!