Problème : destruction d'un objet en fonction de son type
Salut,
Je dispose d'une classe ayant pour membre ces jolies petites bêtes :
Code:
1 2 3
| CEdit* pEdit;
CComboBox* pCombo;
CObArray* array_EditBoxes; |
array_EditBoxes va à la fois contenir des CComboBox et des CEdit.
Se pose alors un problème concernant le destructeur, il faut vérifier le type de l'élement contenu dans array_EditBoxes avant de le déléter, ou est-ce que je me trompe ?
Voila ce que j'ai pour l'instant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| CDynamicForm::~CDynamicForm()
{
for (int i=0; i <array_EditBoxes->GetSize() ; i++ )
{
if (array_EditBoxes->GetAt(i)->IsKindOf(RUNTIME_CLASS(CEdit)))
{
pEdit = (CEdit *)array_EditBoxes->GetAt(i);
delete pEdit;
}
if (array_EditBoxes->GetAt(i)->IsKindOf(RUNTIME_CLASS(CComboBox)))
{
pCombo = (CComboBox *)array_EditBoxes->GetAt(i);
delete pCombo;
}
}
array_EditBoxes->RemoveAll();
delete array_EditBoxes;
} |
Et résultat des course lors de la fermeture de mon application j'ai le droit à un beau bug mémoire...
"array_EditBoxes->GetAt(i)->" étant un CObject faut-il transtyper absolument vers un CEdit ou un CComboBox ? (j'ai essayé mais j'ai toujours mon bug mémoire...)
Que faire ???
Merci d'avance