écrire le contenu d un fichier dans un multiset - C++ - Programmation
Marsh Posté le 29-03-2005 à 16:07:30
C'est pas un truc genre ça ?
Code :
|
Marsh Posté le 29-03-2005 à 16:23:46
tu fous quoi avec des FILE* ?
Code :
|
Marsh Posté le 29-03-2005 à 16:24:17
Lam's a écrit : C'est pas un truc genre ça ?
|
si si
Marsh Posté le 29-03-2005 à 17:08:39
j'ai oublié de l'éffacer!!
ce que tu as mis marche tu crois?car j'ai pas l'outil a disposition pour l'essayer pour le moment!!!merci de me dire quoi
Taz a écrit : tu fous quoi avec des FILE* ?
|
Marsh Posté le 04-04-2005 à 15:29:10
voilà j'ai essayer et quand je compil(avec visual) cela me donne ça:
test error LNK2001: unresolved external symbol "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,class personne const & )" (??5@$$FYAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@ABVpersonne@@@Z)
test fatal error LNK1120: 1 unresolved externals
Voila comment j'ai mis la ligne de lectuire dans le fichier:
Code :
|
File étant déclaré comme suite: ifstream File("toto.txt" );
Quelqu'un sait me dire mon prob?
Marsh Posté le 04-04-2005 à 21:40:45
Le message d'erreur m'a l'air plutôt clair, non ?
Il ne trouve pas l'implémentation de l'opérateur:
Code :
|
(sauf que je ne vois pas trop ce que vient faire le const là dedans, mais bon, ça doit être la fatigue)
Marsh Posté le 05-04-2005 à 08:38:57
ben vi j'ai mis cela mais le problème est qu'il n'en veut pas!! ce serait pas du au fait qeu c'est des strings et donc une longeur variable?
je devrais pas plutot faire un tableau de char au lieur d'un string?
Marsh Posté le 05-04-2005 à 10:15:16
voila d'abord le message d'erreur:
c:\cours\labo c\test\MyFct.cpp(80): error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const std::string' (or there is no acceptable conversion)
c:\cours\labo c\test\MyFct.cpp(81): error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const std::string' (or there is no acceptable conversion)
j'ai essayé en virant les const mais a ce moment la plus iren du tout ne marche
mon code:
Code :
|
Code :
|
Code :
|
Marsh Posté le 05-04-2005 à 10:17:27
Je te redonne mon message. Fait bien attention à la signature de la fonction, ainsi qu'au commentaire en bas du message.
Reessaye, et redonne nous les messages d'erreurs sans le const.
Lam's a écrit : Le message d'erreur m'a l'air plutôt clair, non ?
|
Marsh Posté le 05-04-2005 à 10:47:36
j'ai viré tout les const que je pouvais trouver et voila ce que je trouve comme erreur:
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xtree(484): error C2664: 'bool tri::operator ()(personne &,personne & ) const' : cannot convert parameter 1 from 'const personne' to 'personne &'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xtree(500): error C2664: 'bool tri::operator ()(personne &,personne & ) const' : cannot convert parameter 1 from 'const std::allocator<_Ty>::value_type' to 'personne &'
with
[
_Ty=personne
]
Marsh Posté le 05-04-2005 à 10:54:54
chepa_jemls a écrit : j'ai viré tout les const que je pouvais trouver et voila ce que je trouve comme erreur: |
Si Taz était là, il t'engueulerais comme du poisson pourri. Comme il est pas là, je vais le faire moi-même:
Mais bordel de merde, réfléchis un peu à la signification de chaque const. C'est pas possible ça !!! .
On reprend:
Ton const lors du tri, il est nécessaire, puisque pour comparer 2 éléments, tu ne dois pas les modifier. Donc le foncteur de tri doit garder ses const (d'ailleurs, le message d'erreur que tu nous donne est très clair là dessus, une fois de plus).
Mais ton const qui permet de lire depuis un flux est tout pourri: comment veux-tu modifier un objet si tu le prend en const ?
D'ailleurs, l'implémentation de l'opérateur que tu nous a donné ">>" est mauvaise puisque tu ne peux pas utiliser personne::getNom() puisque celui-ci est const : tu ne peux donc pas modifier le nom en modifiant ce qui est retourné par getNom().
Repose les choses à plat, n'essaye pas de faire de la bidouille, du bricolage ou des recettes de cuisine, et tu verras que tout est logique: on met const quand on ne modifie pas l'objet, et on ne le met pas lorsque l'on souhaite le modifier.
Marsh Posté le 05-04-2005 à 11:07:01
ca ej sias, mais j'essasi de comprend mon erreur en fesant différentes modifs!!! Il y a encor des probs de const, mais je voix pas torp lesquelle retirer!! help please
c:\cours\labo c\test\MyFct.cpp(66): error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax>::_Myt & )' : cannot convert parameter 1 from 'const std::string *' to 'const std::basic_string<_Elem,_Traits,_Ax>::_Myt &'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
and
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
voila ce que j'essaisj'ai mis le header et le code des fonctions!! n'ayant pas modifier mon main, je l'ia pas remis)
Code :
|
Code :
|
Marsh Posté le 05-04-2005 à 11:20:10
Je t'ai dit que ce n'était pas possible d'utiliser getNom(), car il ne te retourne pas une référence sur le membre Personne::nom : il te retourne une copie de la chaîne nom.
La bonne implémentation, ça serait plutôt ça:
Code :
|
Marsh Posté le 05-04-2005 à 11:26:06
et alors dans setnomprenom, je les attribue correctemlent aux données membres?
pk fair eun retur alors?
Marsh Posté le 05-04-2005 à 11:27:45
ça te sert à quoi ton setnomprenom vu que tu as déjà un constructeur ?
# personne::personne():nom(" " ),prenom(" " ){ }
# personne::personne(){ }
->
Marsh Posté le 05-04-2005 à 11:29:25
c'est la question que je me pause lol!!
je dois renvoyer quoi alors?
Marsh Posté le 05-04-2005 à 11:45:09
je fais appel au constructeur et je renvoi l'objet, c'est ça? mais me fait tjs une erreur
Marsh Posté le 05-04-2005 à 11:46:36
Voilà ce que je fait
Code :
|
mais tjs ce mesage d'erreur:
Code :
|
Marsh Posté le 05-04-2005 à 12:29:40
justement j'aimerai savoir lequel de const je dosi enlever
Marsh Posté le 05-04-2005 à 12:34:19
ben voilà, merci les gars, je suis content qu'on peut toujours compter sur les autres!!! merci a donf les gars
Marsh Posté le 05-04-2005 à 12:37:22
Petite colle en passant, si dans ma classe personne se trouve un vecteur et que j'écris dans un fichier!!
est ce qu'il y a moyen de lire? et replacer le nom dans nom, prénom dans prénom et le contenu du vecteur dnas le vecteur?
Marsh Posté le 05-04-2005 à 14:15:47
Il reste un problème, comme il s'agit de string, je dverai pas mettre un caractère qui sépare?car quand on va relire dans le fichier, il ne sauras pas la limite du string
Marsh Posté le 11-04-2005 à 17:33:17
chepa_jemls a écrit : ca ej sias, mais j'essasi de comprend mon erreur en fesant différentes modifs!!! |
Donc tu n'essaies pas de comprendre, tu fais de la programmation-vaudou, en sacrifiant du temps de compilation au dieu Syntax Error, et en modifiant ton rituel jusqu'a ce que le dieu soit satisfait...
A+,
Marsh Posté le 11-04-2005 à 18:22:13
hey si, j'ai compris mes erreurs et mon code fonctionne bien, j'ai compris ce que je fesais!!
et je crois que c'est en fesant des erreurs qu'on avance
Marsh Posté le 11-04-2005 à 18:26:02
bon ben on m'a femré mon autre topic alors que cela n'a rien avoir mais bon!!!
j'essais de mettre un vetceur de string dans ma classe personne, je met un caractère spéciaux pour sigbnaler la fin du vecteur quand je lie dnas le fichier!!
mais le problème est qu'il me relie absolument un nouvelle enregistrement auadn on arrive à la fin du fichier, hors, il n'y a plus de message caractère de fin alors il boucle, quelqu'un a une idée?
mon code su rce topic:
http://forum.hardware.fr/forum2.ph [...] c#t1043197
Marsh Posté le 11-04-2005 à 18:30:58
Pour qu'il trouve le mot "bidon", il faut que bidon soit un mot, c'est à dire séparé par des espaces (un avant, un après). Et ça m'a pas l'air d'être le cas, nan ?
Marsh Posté le 11-04-2005 à 18:54:04
si il le toruve, normalement y en a , je suis pas ocn a ce point!!!
le truc qu'il y a , c'est quand il lit le dernier bidon (qu'il trouve bien entendu)!
il re commence la lecture d'un personne, mais comme il ne trouve jamais le mot bidon, ben ca foire!!
Marsh Posté le 29-03-2005 à 14:41:56
bonjour,
dans le code que je vous montre en fin de post, dans le point 5, j'écris le contenu de mon mulitset dans un fichier (là y a pas de prob)
mais dans le point 6, je dosi lire le contenu du fichier et le remettree dans un multiset mais ca j'arrive pas a faire, pas moyen de trouver une solution...
quelqu'un pourrait m'aider?
les délcarations:
le code de la page: