OVH Cloud OVH Cloud

Pb avec fstream

2 réponses
Avatar
Etienne Rousee
Bonjour,

Quelqu'un pourrait-il me dire pourquoi ce
code ne passe pas à la compilation:

#include <fstream.h>

class A
{
public:
A(ifstream f) { }
};

void toto(void)
{
ifstream fic;
A a(fic); // Tentative d'accès à des données privées ???
}

int main(void)
{
return 0;
}


Etienne

2 réponses

Avatar
Samuel Krempp
Bonjour,


le Thursday 12 February 2004 01:23, écrivit :
Quelqu'un pourrait-il me dire pourquoi ce
code ne passe pas à la compilation:

#include <fstream.h>

class A
{
public:
A(ifstream f) { }


voilà c'est tout simple : cette fonction prend un parametre ifstream par
valeur, ce qui veut donc dire que le constructeur de copie de fstream est
appelé quand tu l'appelles, et on ne peut pas copier un fstream. (déclarer
le cteur de copie privé est une façon de l'imposer)

as-tu des documents sur la standard library C++ ? le bouquin de josuttis, la
doc de ton compilo, la doc en ligne de dinkumware ou de roguewave ou de la
STL de SGI...
tu devrais regarder ce qui est dit concernant les streams.

--
Sam

Avatar
Etienne Rousee
"Samuel Krempp" a écrit..
le Thursday 12 February 2004 01:23, écrivit :
Quelqu'un pourrait-il me dire pourquoi ce
code ne passe pas à la compilation:

#include <fstream.h>

class A
{
public:
A(ifstream f) { }


voilà c'est tout simple : cette fonction prend un parametre ifstream par
valeur, ce qui veut donc dire que le constructeur de copie de fstream est
appelé quand tu l'appelles, et on ne peut pas copier un fstream. (déclarer
le cteur de copie privé est une façon de l'imposer)


Merci, bien sûr, j'aurais du y penser.
Il suffit de passer le paramètre par référence.

Etienne