Delete // new // CObjArray::Add(* CObject) ALORS CA C'EST FORT

Résolu
equimose Messages postés 65 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 17 avril 2009 - 21 août 2005 à 05:41
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 21 août 2005 à 10:06
bonsoir
aider moi !

je comprend pas j'ai un tableau public de CMyLigne : CObArray m_oaLignes dans ma classe CMyCadrillage
j'ai une fonction de cette classe qui ajoute deux MyLignes au tableau.
j'ai une fonction de cette meme classe qui raméne le pointeur sur chaque ligne du tableau
pour les tracées.

Mais pour ajouter une ligne au tableau je créer un objet CMyLigne dinamiquement avec new
je modifis ma ligne,
je l'ajoute au tableau
je supprime l'objet avec delete

et le probleme c'est que si j'utilise delete, mon tableau se retrouve remplit de donnée fausses !!!!!
C'est incroyable ! je comprend pas !
Tandis que si je ne supprime pas mes objets (aprés les avoir ajouter dans le tableau biensur !!), ca marche trés bien!
kesako ????

voila le code


void CMyCadrillage::SetLigneFuite(
void)


{


CMyLigne *A=
new CMyLigne;


CMyLigne *B=
new CMyLigne;


A->SetColor(GetColor(1),GetColor(0));


B->SetColor(GetColor(1),GetColor(0));


A->PutAB(0,m_FuiteCentre);


A->PutAB(1,m_Segment.GetMyPointAB(0));


B->PutAB(0,m_FuiteCentre);


B->PutAB(1,m_Segment.GetMyPointAB(1));



m_oaLignes.RemoveAll(); // je netoi le tableau comme un porc


m_oaLignes.Add( A); // j'ajoute une ligne


m_oaLignes.Add( B); // j'ajoute une ligne



delete A; //et je vire les ligne



delete B;

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
21 août 2005 à 10:06
Evidemment qui si tu as un tableau de pointeurs il ne faut pas les supprimer avec delete, sinon les éléments du tableau ne pointent plus vers rien
3
equimose Messages postés 65 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 17 avril 2009
21 août 2005 à 06:08
des que je sort de la fonction les valeurs du tableau sont inexactes!!!!


for(
int a=0;a<m_oaLignes.GetCount();a++)
{
pLigne=GetpLigne(a);
}

les valeur de pLigne ne sont valable que si j'utilise ce code dans la fonction au dessus.......

j'y pense! j'ai un tableau principal dans lequel je stocke un type d'objet CObjArray MyRepere

sachant qu'un objet MyRepere, c'est un tableau CObjArray de ligne, et un tas d'autre truc inutil. C'est peut etre la que ca deconne. on doit pouvoir faire un tableau de tableau non ??
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
21 août 2005 à 08:45
As tu vraiment besoin de faire un pointeur sur CMyLigne pour l'ajouter à ton tableau ?

Cordialement,
Xterminhate.
0