ostream_iterator mit eigenem Datentyp



  • Hallo
    ich versuche meine Vektor-Klasse in einer Datei zu speichern dafuer habe ich mir diese Funktionen geschrieben:

    namespace datatypes
    {
    	typedef struct triangle
    	{
    
    		triangle operator+(const triangle &t)
    		{
    			x+=t.x;
    			y+=t.y;
    			z+=t.z;
    			return *this;
    		};
    	  float x,y,z;
    	}Vector3D;
    
    static datatypes::Vector3D bodenVertices[(laenge+1)*(breite+1)];
    
    ostream& operator<<(ostream &os,const datatypes::Vector3D &vec)
    {
      os << vec.x << ", " << vec.y << ", " << vec.z << " ";
      return os;
    }
    

    Hier versuche ich nun mit copy alles in die Datei zu schreiben:

    ofstream verFile("Vertices.txt");
      copy(bodenVertices,bodenVertices+(laenge+1)*(breite+1),ostream_iterator<datatypes::Vector3D>(verFile,","));
    

    Leider bekomme ich immer ganz viele Compiler-Fehlermeldungen:

    /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stream_iterator.h: In member function 'std::ostream_iterator<_Tp, _CharT, _Traits>& std::ostream_iterator<_Tp, _CharT, _Traits>::operator=(const _Tp&) [with _Tp = datatypes::triangle, _CharT = char, _Traits = std::char_traits<char>]':
    /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_algobase.h:285:   instantiated from 'static _OI std::__copy<_BoolType, std::random_access_iterator_tag>::copy(_II, _II, _OI) [with _II = datatypes::Vector3D*, _OI = std::ostream_iterator<datatypes::triangle, char, std::char_traits<char> >, bool _BoolType = false]'
    /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_algobase.h:317:   instantiated from '_OI std::__copy_aux(_II, _II, _OI) [with _II = datatypes::Vector3D*, _OI = std::ostream_iterator<datatypes::triangle, char, std::char_traits<char> >]'
    /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_algobase.h:326:   instantiated from 'static _OI std::__copy_normal<<anonymous>, <anonymous> >::copy_n(_II, _II, _OI) [with _II = datatypes::Vector3D*, _OI = std::ostream_iterator<datatypes::triangle, char, std::char_traits<char> >, bool <anonymous> = false, bool <anonymous> = false]'
    /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_algobase.h:387:   instantiated from '_OutputIterator std::copy(_InputIterator, _InputIterator, _OutputIterator) [with _InputIterator = datatypes::Vector3D*, _OutputIterator = std::ostream_iterator<datatypes::triangle, char, std::char_traits<char> >]'
    3D-Modelle/Boden.cpp:38:   instantiated from here
    

    Wie kann man das Problem loesen?

    mfg 🙂



  • Bei mir gehts ohne Probleme! 🙂


Log in to reply