C++ operator << pour les ofstream - C++ - Programmation
Marsh Posté le 28-06-2005 à 12:03:46
bah bha bhbhahahshashd
on fais du polymorphisme
alors ton opérateur, ça signature, c'est
ostream& operator<<(ostream&, const T& );
et n'oublie pas le return !
tu m'étonnes que ça soit récurrent : c'est n'importe quoi juqu'à maintenant.
Marsh Posté le 28-06-2005 à 12:15:06
Non le plus chelou c'est que pour un ostream çà marche mais pas pour les ofstream& et oui j'ai pas oublier le return.
Sinon qu'est ce qu'est du n'importe quoi ?
Marsh Posté le 28-06-2005 à 12:24:17
PARCE QU'ON NE SURCHARGE CET OPÉRATEUR QUE POUR LA BASE OSTREAM OU ISTREAM SELON.
Marsh Posté le 28-06-2005 à 12:25:52
et pourquoi on peut pas surcharger l'opérateur << pour les ofstream
Marsh Posté le 28-06-2005 à 12:40:13
je pense a ca!
corrige moi taz si pas bon
Citation : La classe ofstream : cette classe est dédiée aux écritures réalisées dans des fichiers. La classe ofstream est dérivée de la classe ostream et bénéficie donc de toutes les méthodes définies dans cette classe. Voici un exemple d'utilisation : |
Marsh Posté le 28-06-2005 à 12:47:35
rapport avec le sujet ?
le problème qu'il a, c'est simplement qu'après une redirection non surchargée, il se retrouve avec un ostream, et non pas un ofstream, c'est là la source de tous ses déboires
Edit :
qui plus est, c'est de mauvais goût, ce genre de choses
Citation : ofstream fichierSortie("donnees.txt", ios:: out); |
Et je ne parlerai pas du exit(1) ni même du fichiersortie.close()
Marsh Posté le 28-06-2005 à 13:47:40
Okay, et dans ces cas là comment qu'on fai pour écrire dans un fichier : medite pas qu'il faut que je passe forcément par un fprintf ninia
Si je comprend bien la classe ofstream si çà marche tant mieux et si çà marche pas ben tant pis
Marsh Posté le 28-06-2005 à 13:49:59
une simple surcharge comme celle-ci ne te convient pas ?
Code :
|
Edit : note que je ne connais pas le type de nb_vertex, mais je suppose qu'il s'agit d'un type primitif pour lequel la surcharge de << est déjà faite, non ?
Edit 2 : c'est ce que Taz t'avait dit depuis le début :
Citation : alors ton opérateur, ça signature, c'est |
Marsh Posté le 28-06-2005 à 14:00:12
Je crois qu'il n'a pas compris que ofstream hérite de ostream. Donc ce qui marche pour ostream marche pour ofstream.
Marsh Posté le 28-06-2005 à 14:02:01
Je dis peut-être une méga c**** mais tant pis:
Problème de const avec mesh.nb_vertex?
"error C2666: 'operator`<<'' : 7 overloads have similar conversions"
Et si tu cast mesh.nb_vertex?
Edit: oui bon puisque c'est un int, ni l'un, ni l'autre...
Marsh Posté le 28-06-2005 à 14:04:06
theshockwave a écrit : une simple surcharge comme celle-ci ne te convient pas ?
|
nb_... est un
Code :
|
donc parfaitement primitif
Je vais essayer mais je voulais faire deux méthodes distinctes (pour l'ostream typiquement utilisé via
Code :
|
écrire des information lisible alors qu'avec l'ofstrem je ne note que le strict minimum (pas de chaine de caractère autre que les blancs).
Mais sinon oui çà marche en ne mettant pas d'opérateur
Code :
|
Marsh Posté le 28-06-2005 à 14:12:17
ostream est typiquement utilisé avec les ostream .|
ce que tu es fais, c'est naz, ça ne rime à rien. Si tu as besoin de deux formes de sérialization, et bien fais autrement. Mais pas comme ça. Un flux, c'est un flux, où qu'il soit. Faire des daubes uniquements pour les fstreams, c'est écrire des lignes pour rien.
Comment faire ? une fonction membre par type de sérialization, ou une classe Serilaizer qui t'aide flux << My::serialize(obj) ... etc. Ou aussi les modificateur de flux.
Bref ton truc, ça ne marche pas.
Marsh Posté le 28-06-2005 à 14:45:10
Désolé Taz
En faite mon prof de tp de c++ nous avait appris à faire comme çà, donc c'est dur de perdre des vieilles habitudes.
J'ai retenu la leçon maintenant
Marsh Posté le 28-06-2005 à 14:45:55
j'avais déjà fait un topic pour faire un petit manipulateur de flux, c'est vachement sympatoche.
Marsh Posté le 28-06-2005 à 15:02:16
J'espère que tu réalises bien la crêtinerie de ton prof quand même. Dans un vrai programme, a fortiori graphique, cout tu ne le verras jamais !
Marsh Posté le 28-06-2005 à 11:45:35
Voilà, j'ai un problème réccurent et assez curieux (j'utilise visual c++ .net, mais je rois que sous g++ [donc sous linux] j'ai rencontrer le même problème) :
çà marche, çà compile
mais
çà compile pas :
"error C2666: 'operator`<<'' : 7 overloads have similar conversions"
Je peux remplacer le " " par n'importe quel chaine de caractère çà me fait toujours la même chose. La chose la plus pénible c'est que sur certain projet çà marche (les deux formes) et sur certains non.
Si quelqu'un a déjà rencontrer ce problème (et surtout à compris d'où çà venait) merci
EDIt : j'ai rajouter le return str mais je l'avais enlever ici pour que le code soit le plus petit possible
Message édité par LordHarryPotter le 28-06-2005 à 12:14:36