In een SDI project probeer ik een document te maken welke gebaseerd is op een array van pointers naar classen. Mijn probleem is, dat ik wel de parent classe kan serializen, maar ik weet niet hoe ik de afgeleide classen kan serializen. Ik zal het probleem iets proberen te verduidelijken dmv een dierentuin voorbeeld:
ik heb in mijn programma dan een CObArray welke gevuld is met pointers naar instanties van aap en neushoorn. in de Document classe gebruik ik deze code voor het toevoegen van een dier aan de array en het opslaan van het document:
Probleem is, dat nu wel de serialize functie van "CDier" aangeroepen wordt, maar niet van aap en neushoorn. Onderstaand is de functie die ik nu gebruik. Kan iemand me vertellen wat ik moet veranderen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| classe dier{ enum soortDier{aap, neushoorn}; int leeftijd; color kleurOgen; } classe aap{ color kleurVacht; string soortAap; } classe neushoorn{ int gewicht; } |
ik heb in mijn programma dan een CObArray welke gevuld is met pointers naar instanties van aap en neushoorn. in de Document classe gebruik ik deze code voor het toevoegen van een dier aan de array en het opslaan van het document:
C++:
1
2
3
4
5
6
7
8
| void CDierentuin::AddDier(CDier* dier){ aDieren.Add(dier); dieren++; } void CDierentuin::Serialize(CArchive& ar){ aDieren.Serialize(ar); } |
Probleem is, dat nu wel de serialize functie van "CDier" aangeroepen wordt, maar niet van aap en neushoorn. Onderstaand is de functie die ik nu gebruik. Kan iemand me vertellen wat ik moet veranderen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| void CDier::Serialize(CArchive &ar){ CObject::Serialize(ar); if (ar.IsStoring()){ ar <<(int)soortDier; ar <<leeftijd; ar <<kleurOgen; }else{ ar >>soortDier; ar >>leeftijd; ar >>kleurOgen; } } |
Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.