AHHHH ! Serializer un pointeur vers une collection ... AHHHHHHHHHHHHHHH !!!
3 réponses
William A.
Bonjour,
je m'arrache les cheveux sur le processus de serialization (c'est la
première fois que je tente de faire une serialization) en MFC
(document/vue).
Mon problème :
Je veux serialiser la structure de ma TreeView.
Mon document contient un pointeur "pRacine" vers un objet CDossier dérivé de
CObject.
la classe CDossier contient :
- des données membres de type CString, CTime, ....
- un pointeur "pEnfants" pointant vers une collection (CTypedPtr) d'objets
de type CDossier
- un pointeur "pParent" vers un objet de type CDossier
Je cré mon "pRacine" dans le constructeur de mon document.
j'initialise "pEnfant" et "pParent" à NULL car il s'agit de la racinede
l'arbre.
Mon interface permet de créer des dossiers enfants qui sont rajoutés à la
collection "pEnfant" correspondante.
Comment faire pour serializer mon pRacine ?
Ma fonction Serialize ressemble à celle ci-après :
CDossier::Serialize(CArchive &ar)
{
if(ar.IsStoring())
{
ar << m_donnee1;
ar <<m_donnee2;
}
else
{
ar >> m_donnee1;
ar >>m_donnee2;
}
pEnfant->Serialize(ar);
}
MON PROBLEME :
j'arrive bien à sauvegarder mon document, le problème est à l'ouverture :
en effet à l'ouverture de mon programme comme je l'ai dit, pRacine est créé
et son membre pEnfants (pointeur vers collection) est initialisé à NULL.
du coup "pEnfant->Serialize(ar); " lance une exception.
De plus, comment serialisé mon pointeur vers l'objet pParent ? J'aimerai ne
pas reserializer l'objet parent mais juste garder la référence du pointeur.
Bref ç ne va pas du tout et je ne sais vraiment pas comment m'y prendre !
William
un petit newbie ...
__________________________________________________________________ Goulou
ICQ#: 111148586 Current ICQ status: + More ways to contact me
__________________________________________________________________