[MFC][serialisation] erreur lors du chargement
bonjour,
la sérialisation dans mon application tourne autour de 2 classes:
graph et node;
graph.h
Code:
1 2 3 4 5 6 7 8 9 10
|
class Graph : public CObject
{
public :
CArray<Node*,Node*> m_tab_nodes ;
/*......*/
DECLARE_SERIAL(Graph);
void Serialize(CArchive& ar);
} |
graph.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
template <> static void AFXAPI SerializeElements<Node*> ( CArchive& ar, Node** pN, int nCount )
{
for ( int i = 0; i < nCount; i++, pN++ )
{
(*pN)->Serialize(ar);
}
}
IMPLEMENT_SERIAL (Graph, CObject, 1);
void Graph::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
m_tab_nodes.Serialize(ar);
} |
Node.h
Code:
1 2 3 4 5 6 7 8 9
|
class Node :public CObject
{
/*....*/
DECLARE_SERIAL(Node);
void Serialize(CArchive& ar);
}; |
Node.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
IMPLEMENT_SERIAL (Node, CObject, 1);
void Node::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsStoring())
{
ar<</*mes attributs int/CString*/;
}
else
{
ar>>/*mes attributs int/CString*/;
} |
la sauvegarde se passe sans problème (du moins il me semble car le nCount vaut bien le nombre de Node que j'ai enregistré ).
lors du chargement l' erreur vient de la ligne :
Code:
(*pN)->Serialize(ar);
(*pN) étant un pointeur sur NULL ,ca plante.Je ne vois pas quoi faire pour contourner cette erreur
la faq indique qu il faut mettre:
Code:
1 2
|
template<> static void AFXAPI SerializeElements<Node*> ( CArchive& ar, Node** pN, int nCount ); |
dans graph.h, mais quand je le fais j'ai une erreur de compile:
Citation:
error C2129: static function 'void __stdcall SerializeElements(class CArchive &,class Node ** ,int)' declared but not defined
je l'ai donc enlever.
j'ai bien regarder la faq et je ne vois pas se que je vais comme erreur.
merci d'avance.