Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1674 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] J'y comprends plus rien !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] J'y comprends plus rien !

n°33153
tgrx
My heart is pumping for love
Posté le 18-05-2001 à 19:57:06  profilanswer
 

Voici un court extrait de mon programme :
 
ofstream & operator << (ofstream& out, const Fluid& f)
{
  out << f.variables << ...  
  out << f.matrices << ...
  out << flush;
  cout << "Well done\n";
  return out;
}
 
void Fluid::Save(const string filename)
{
  ofstream f(filename.c_str(), ios::binary);
  if (f==NULL)
    {
      cout << "Unable to create v3d file : " << filename << "\n";
      return;
    }
  cout << "Writing fluid file...\n";
  f << (Fluid) *this;
  cout << "This is done\n";
}
 
 
Quand je lance la fonction Fluid::Save(), voila ce que j'obtiens a l'ecran :
 
Writing fluid file...
Well done
Segmentation fault
 
Pourquoi diable est-ce que ca plante ? :crazy::crazy:
Quelqu'un a-t-il deja eu des pbs similaires, ou qq'un a t'il une idee ??

mood
Publicité
Posté le 18-05-2001 à 19:57:06  profilanswer
 

n°33171
heffer
PDG du Site des Mains
Posté le 18-05-2001 à 23:54:33  profilanswer
 

"Segmentation fault" c'est un pb d'allocation de mémoire je crois. Mais je comprends pas vraiment ton prog vu qu'il n'y a pas tout. Il fait quoi ton opérateur <<.
Moi j'essayerais de ne pas retouner une référence pour ton opérateur <<.


---------------
Découvrez la version 2005 du  Site des Mains!! C'est la même qu'en 2004!
n°33251
tgrx
My heart is pumping for love
Posté le 20-05-2001 à 04:37:11  profilanswer
 

Je suis oblige de retourner une reference si je veux surcharger l'operateur << (qui consiste a ecrire des donnees dans un flux, fichier pour f, sortie ecran pour cout).
 
Ce que je ne comprends pas c'est qu'a priori le programme plante au moment du "return out", alors que quand je regarde le fichier ecrit, il est parfaitement correct, la structure s'est parfaitement bien sauvee sur le disque. Le probleme vient du fait qu'il n'arrive pas a effectuer le 'return out'.
C'est franchement  :ouch:  :(

n°33267
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2001 à 11:26:02  profilanswer
 

pour moi, c'est:
f << (Fluid) *this;
 
qui fait planter. Le passage par référence, c'est très vicieux comme truc. C'est un passage par adresse écrit et manipulé comme un passage par valeur.
Tu devrai essayer ça:
f << (Fluid) this;

n°33352
tgrx
My heart is pumping for love
Posté le 21-05-2001 à 09:02:54  profilanswer
 

rufo> ok pour ton explication, mais pourquoi dans ce cas l'operateur << arrive a m'ecrire correctement le contenu de la classe Fluid dans le fichier, et plante uniquement au retour, au 'return out' ?
 
Si le passage par reference de *this merdait, ca le ferait des le debut non ?

n°33363
BENB
100% Lux.
Posté le 21-05-2001 à 09:41:25  profilanswer
 

Je suis desolee de te repoondre par une question, mais pourquoi :
f<<(Fluid)*this;
et non pas f<<*this; ?
 
Qu'apporte le Cast Fluid ici ?
Il me semble plus dangereux qu'autre chose...
Est-il necessaire ?

 

[edit]--Message édité par BENB--[/edit]

n°33366
tgrx
My heart is pumping for love
Posté le 21-05-2001 à 09:48:26  profilanswer
 

Il apporte pas grand chose c vrai.
C'est juste que j'ai ecrit l'operateur << pour un grand nombre de classes, qui derivent les unes des autres, et je veux etre sur que le compilateur ne fait pas n'importe quoi.
 
Mais tu as raison je vais essayer sans le cast. :hello:

n°33370
tgrx
My heart is pumping for love
Posté le 21-05-2001 à 10:01:33  profilanswer
 

YES ! CA MARCHE ! :benetton: :hap:
 
Un probleme qui me tracassait depuis des lustres... BENB je t'adore :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] J'y comprends plus rien !

 

Sujets relatifs
[HTML] rien de compliquerdebutant ki connait rien
[ASP/VB/ActiveX] Help je comprends rien du tout à cette merde ![ASP] un petit pb de rien du tout....
Anglais informatisé... Aie ! J'y comprends pas tout !Rien a voir MAIS : "Salaire d'un DUT info en provice ?"
[ASP sous Win 2000] A comprends pas ce qui va pasc encore moi et y'a un truc que je comprends pas
Rien à voir mais please help! 
Plus de sujets relatifs à : [C++] J'y comprends plus rien !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR