C++ Sauvegarder dans le constructeur

Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008 - 21 févr. 2007 à 07:01
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008 - 21 févr. 2007 à 14:03
Bonjour y aurait-il quelqu'un qui aurait une idée pour sauvegarder dans un fichier (dont le nom est passer en ligne de commande) dans le constructeur d'un classe sans passer ni le nom ni le fichier en paramètre du constructeur car j'utilise cette classe dans un container qui a besoin du constructeur par défaut ? je sais ca fait beaucoup de condition mais c pour un projet pour l'école j'ai pas trop le choix

merci d'avance

11 réponses

BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
21 févr. 2007 à 09:38
En règle général, tu ne peux ouvrir un fichier sans avoir au moins le nom du fichier ou le pointeur sur le fichier.
De plus, je ne vois pas l'intérêt de "sauvegarder dans un fichier" dès le constructeur. Fais une fonction dédiée à cela.

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
21 févr. 2007 à 09:38
Rien ne t'empeche d'avoir un autre constructeur que celui par défaut
0
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008
21 févr. 2007 à 12:21
non le problème c'est que il m'est demandé de sauvegarder l'élément (une piece musee art) dès qu'elle est créer hors je suis dans un moment où je fais des classes donc je dois les faire dans le construteur de  plus si je n'enregistre pas le constructeur par défaut je n'enregistre pas la création de tout les piece
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
21 févr. 2007 à 12:45
Je dois dire que tes explications sont un peu flou, je ne vois pas ce que tu dois faire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008
21 févr. 2007 à 12:52
voila la partie de mon énoncé qui me pose problème :
6. Première utilisation des flux<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







6.1 Un petit fichier à enregistrements







On demande que tout objet
PieceMuseeArt
, une fois créé, soit écrit  dans un fichier dont le nom est passé sur la ligne de commande de l'application qui l'utilise.

le problème majeur est que j'utilise le constructeur par défaut dans une classe container nommé VecteurTrie (mais ca on s'en fout du nom) donc si je met un paramètre a ce constructeur i riposte car il en veut un vide mais si je fais un constructeur supplémentaire je n'enregistre pas toute les piece créée
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
21 févr. 2007 à 12:58
Pourquoi il te faut absolument un constructeur vide, c'est ou qu'il pose problème ?

A mon avis c'est un truc du style qu'il te faut


class PieceMuseeArt
{
public :
PieceMuseeArt(const std::string filename) : file(filemane)
{
blablabla;
save2disk();
}

save2disk() const
{
write(file ,...); //sauvegarde
}

private:
std::string file;
};
0
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008
21 févr. 2007 à 13:05
lol paque dans un container j'ai ceci

void

VecteurTrie<t> :: invers (t *pi1 , t *pi2) {

t tmp ;

tmp = *pi1;

*pi1 = *pi2;

*pi2 = tmp;

}

ce container qui est utiliser pour des PieceMuseeArt et c'est la qu'est tout le problème car cette piece tmp je ne sais pas la sauvegarder
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
21 févr. 2007 à 13:30
Contructeur par copie !!!

class PieceMuseeArt
{
public :
PieceMuseeArt(const std::string filename) : file(filemane)
{
blablabla;
save2disk();
}

PieceMuseeArt(const PieceMuseeArt& src): file(src.file), .... ; /* copie de tout tes membres private*/

save2disk() const
{
write(file ,...); //sauvegarde
}

private:
std::string file;
};



template <class T>
VecteurTrie<T> :: invers (T* pi1 , T* pi2)
{

T tmp(*pi1);

*pi1 = *pi2;

*pi2 = tmp;

}
0
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008
21 févr. 2007 à 13:57
Mais oui mais alors je ne sauvegarde pas quand je crée une PieceMuseeArt par constructeur par défaut
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
21 févr. 2007 à 13:59
Si, c'est lors de la copie que tu ne sauvegarde pas, car comme sont nom l'indique c'est une copie pas une construction

Dans ta class tu appelle la fonction pour sauvegarder à la construction

class PieceMuseeArt
{
public :
PieceMuseeArt(const std::string filename) : file(filemane)
{
blablabla;
save2disk();
}

PieceMuseeArt(const PieceMuseeArt& src): file(src.file), .... ; /* copie de tout tes membres private*/

save2disk() const
{
write(file ,...); //sauvegarde
}

private:
std::string file;
};
0
Thieu86 Messages postés 13 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 mars 2008
21 févr. 2007 à 14:03
Lol pas grave j'ai l'impression qu'on ne se comprend pas :p on va voir si qq'un me comprend mieux je ne sais pas trop comment m'exprimer pour t'expliquer en fait
0
Rejoignez-nous