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!