Bonjour à tous,
Ayant abandonné l'option de liens avec une base de données, je me rabat sur la serialisation, normalement plus simple mais je me retrouve avec de nouveaux problèmes.
Dans ma classe Document j'ai une liste :
CList<Cemprunteur> listeEmprunteur
Mon but est de serialiser cette liste.
Seulement ma classe contient des variables membres, mais aussi un vector :
Qu'est ce que j'ai fait jusque la :
1- Appel de la méthode serialize de ma classe Emprunteur à partir de la méthode serialize de ma classe Document.
2- Surcharge de l'operateur = pour ma classe emprunteur
3- définition d'un constructeur par recopie pour ma classe emprunteur
4- Définition de ma méthode serialize dans ma classe Emprunteur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
void CEmprunteur::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO : ajoutez ici le code de stockage
//sauvegarde des variables membres
ar << this->Nom;
ar << this->Prenom;
ar << this->Adresse;
ar << this->Telephone;
//sauvegarde du tableau de gage (Vector)
/*ar << this->tabG.size();
for (std::vector<CGage>::iterator
i = this->tabG.begin();
i != this->tabG.end();
++i)
{
ar << *i;
}*/
}
else
{
// TODO : ajoutez ici le code de chargement
ar >> this->Nom;
ar >> this->Prenom;
ar >> this->Adresse;
ar >> this->Telephone;
/*WORD w;
//reccupération du vector de gage
this->tabG.clear();
ar >> taille;
CGage g;
this->tabG.reserve(taille);
for (int i = 0; i < taille; ++i)
{
ar >> g;
this->tabG.push_back(g);
}*/
}
} |
Ceci en piochant à droite a gauche des explications, seulement je me retrouve avec pas mal d'erreurs de compilation du genre :
Error 1 error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const CEmprunteur' (or there is no acceptable conversion) c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h 977
Et de plus je ne suis absolument pas sur que toute ma CList sera serialisée de cette manière.
N'y aurait-il pas une méthode précise pour ce genre de cas ? La Faq ne m'aide pas vraiment, je ne comprend pas ce qui est expliqué.....
Je vous remercie des réponses apportées.
Partager