surcharge de l'operateur >> - C++ - Programmation
Marsh Posté le 19-10-2006 à 23:18:27
CVertex &operator>>(std::fstream &f, CVertex &vertex
->
std::istream& operator>>(std::istream &, CVertex & );
Marsh Posté le 19-10-2006 à 23:41:06
Amonchakai a écrit : 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 ? |
si la définition le la surcharge de operator>> est dans un header, elle doit être déclaré inline. Sinon, il faut mettre la définition au chaud dans un .cpp -- comme pour n'importe quelle fonction non-template.
(bien sur, le prototype de ton operator>> est suspect)
Marsh Posté le 20-10-2006 à 06:58:19
Ok, ça marche Merci a tous !
je me disais bien qu'il y avait un problème avec mon opérateur... Disons que j'ai cherché dans tous mes livres et sur internet et j'avais pas vu d'explication sur la surcharge de cet opérateur... (l'operateur<< oui mais l'autre...). Aussi j'ai essayé ce qu'il ne faut jamais faire en C++ (et qui c'est avéré vrai cette fois ci aussi) bidouiller...
Toujours est-il Merci a tous les deux
Marsh Posté le 19-10-2006 à 19:36:23
Bonjour !
je suis en train de faire un petit programme qui doit être capable d'écrire des structure du type :
Bon pour l'écriture pas de soucis : j'ai surchargé l'opérateur << :
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 :
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 :
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