Problem mit ostream::operator<<()
-
Hallo,
ich möchte den operator<< für meine Vectorklasse überladen:
template <typename type, int dimension> std::ostream &operator<<(std::ostream &os, vector<type, dimension> &t) { os << "( "; for(int i = 0; i < dimension; i++) os << t[i] << " "; os << ")"; return os; }Allerdings beschwert sich gcc:
vector.hpp: In function ‘std::ostream& operator<<(std::ostream&, vector<type, dimension>&)’: vector.hpp:326: error: no match for ‘operator<<’ in ‘os << "( "’ vector.hpp:329: error: no match for ‘operator<<’ in ‘os << ")"’Warum?

-
hast du nur <iosfwd> inkludiert?
-
volkard schrieb:
hast du nur <iosfwd> inkludiert?
Danke, das hat das Problem gelöst.

-
mach aus der vector-Referenz noch eine const-referenz. Schließlich sollte die Ausgabe den vector nicht verändern. Ggf. muss dann auch der opertor[] als const deklariert werden (bzw. es muss einen zweiten operator[] geben, der als const deklariert ist, siehe die Deklarationen der op[] von std::vector, std::map)
-
pumuckl schrieb:
mach aus der vector-Referenz noch eine const-referenz. Schließlich sollte die Ausgabe den vector nicht verändern. Ggf. muss dann auch der opertor[] als const deklariert werden (bzw. es muss einen zweiten operator[] geben, der als const deklariert ist, siehe die Deklarationen der op[] von std::vector, std::map)
Danke für die Tipps!