Est-ce que mes destructeurs sont corrects ?

Résolu
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 17 juin 2006 à 15:34
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 17 juin 2006 à 16:25
Bonjour, voila, j'ai les classes suivantes, et le programme suivant :
class st2
{
public:
int nb;            // Le nombre de briques de chacun des joueurs    
int *liste;        // La liste des briques (de dimension nb);


~st2();  // Le destructeur de la classe
};




class st1
{
st2 *st;    
~st1();              // Le destructeur de la classe
};

// Les destructeurs
st2::~st2(){
delete liste;
}
st1::~st1(){
delete st;
}

// Le programme qui l'utilise
main(){
st1 liste_st[5];
for(int i=0;i<5;i++){
st=new st2[2];
for(int j=0;j<5;j++){
liste=new int[4];
}
}

J'aimerais tout simplement que vous me disiez si les destructeurs sont corrects, merci  :)

6 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
17 juin 2006 à 15:47
Pour ta classe st2, c'est "delete[]" ( [ ] ) et non delete qu'il faut utiliser puisque tu détruits un tableau.


Par contre, ca c'est n'importe quoi:

main(){

st1 liste_st[5];

for(int i=0;i<5;i++){

st=new st2[2];

for(int j=0;j<5;j++){

liste=new int[4];

}

}
3
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
17 juin 2006 à 15:59
pourquoi ? (c'est du code raccourci que j'ai utilisé pour l'exemple)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
17 juin 2006 à 16:04
Pourquoi, bas qu'est ce que tu essais de faire avec ca ?

st1 liste_st[5];

for(int i=0;i<5;i++)

{

st=new st2[2];

for(int j=0;j<5;j++)

{

liste=new int[4];

}

}
0
cs_ronaldo1 Messages postés 25 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 23 juillet 2006
17 juin 2006 à 16:15
En effet avec ce programe tu va allouer de la mémoire pour st 5 fois et pour liste (qui n'ai même pas créé) 25 fois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ronaldo1 Messages postés 25 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 23 juillet 2006
17 juin 2006 à 16:22
Je te conseil pour le liste d'allouer la mémoire dans le construteur de la class st2 style:

st2::st2(int i){
    nb = i;
    liste = new int[i];
}
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
17 juin 2006 à 16:25
ok. merci.
0
Rejoignez-nous