Amonchakai | Bonjour !
je suis en train de faire un petit programme qui doit être capable d'écrire des structure du type :
Code :
- struct CVertex
- {
- float x, y, z,
- nx, ny, nz,
- u, v;
- };
|
Bon pour l'écriture pas de soucis : j'ai surchargé l'opérateur << :
Code :
- std::ostream &operator<<(std::ostream &f, const CVertex &vertex)
- {
- return f <<vertex.x << " " << vertex.y << " " << vertex.z << " " << vertex.nx << " " << vertex.ny << " " << vertex.nz << " " << vertex.u << " " << vertex.v << " ";
- }
|
mais pour la lecture j'aurrais voulu surcharger l'operateur >>. Mais, il se trouve que je me suis rendu compte que j'ai jamais vu la surcharge de l'opérateur >>, l'opérateur << on voit ça souvent mais pas dans l'autre sens...
Aussi j'ai essayé de faire ça :
Code :
- CVertex &operator>>(std::fstream &f, CVertex &vertex)
- {
- f >> vertex.x;
- f >> vertex.y;
- f >> vertex.z;
- f >> vertex.nx;
- f >> vertex.ny;
- f >> vertex.nz;
- f >> vertex.u;
- f >> vertex.v;
- return vertex;
- }
|
Ca a l'air de marcher, mais est-ce que celà vous parrait correct ?
Sinon dans mon programme de test, ça marche impécable mais quand je l'intègre dans mon vrai projet, ça marche plus... j'ais les erreurs de lien suivante : Citation :
error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,struct CVertex const & )" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABUCVertex@@@Z) already defined in main.obj
error LNK2005: "struct CVertex & __cdecl operator>>(class std::basic_fstream<char,struct std::char_traits<char> > &,struct CVertex & )" (??5@YAAAUCVertex@@AAV?$basic_fstream@DU?$char_traits@D@std@@@std@@AAU0@@Z) already defined in main.obj
ModelLoader.obj : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,struct CVertex const & )" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABUCVertex@@@Z) already defined in main.obj
ModelLoader.obj : error LNK2005: "struct CVertex & __cdecl operator>>(class std::basic_fstream<char,struct std::char_traits<char> > &,struct CVertex & )" (??5@YAAAUCVertex@@AAV?$basic_fstream@DU?$char_traits@D@std@@@std@@AAU0@@Z) already defined in main.obj
|
Bon il a l'air de parler de redéfinition... pourtant ma structure CVertex et la surcharges de ses opérateurs sont bien dans un bloc ifndef/define/endif... Vous auriez une idée ?
Merci |