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!


Anmelden zum Antworten