effacer un tableau de pointeur [c++] - C++ - Programmation
Marsh Posté le 27-02-2003 à 16:21:24
Enfin bon en bref, le truc c que quand on a un tableau d'objets le tout alloué dynamiquement:
?
y faut d'abord effacer tous les objets puis le tableau
OU ALORS
y suffit d'effacer le tableau
?
(dis comme ça c mieux je crois!! ).
Marsh Posté le 27-02-2003 à 23:38:26
ben en gros les vector et les string sont standards et se proposent de te faire, de façon sure et bien meilleure tout le boulot que tu t'escrimes à accomplir. et en plus, ils ont la gentillesse de fournir plein d'autres fonctionnalités... pour ma commission on verra ça en MP
std::vector
http://www.sgi.com/tech/stl/Vector.html
et pour les std::string, y a des liens dans le bibliolinks C++
hesite pas à poster tes problèmes avec l'utilsiation de STl. ca va te demander un peu d'apprentissage mais ton programme n'en sera que meilleur et plus sure.
Marsh Posté le 28-02-2003 à 12:55:01
ok merci je vais jeter un coup d'oeil (et + si affinités )
Marsh Posté le 27-02-2003 à 15:21:15
Imaginons un truc du style :
char **tabStrings;
int nb_strings=10;
tabStrings = new char*[nb_strings];
for(int i=0; i<nb_strings; i++)
tabStrings[i] = new char[strlen(CHAINE A STOCKER)];
..............
bon jusque là ça va (à moins que j'ai rien compris du tout)
..............
Quand je veux effacer tout ça on peux faire directement
delete [] tabStrings;
tabStrings=NULL;
ou alors y faut tout effacer càd
for(i=0; i<nb_strings; i++)
{
delete [] tabStrings[i];
tabStrings[i]=NULL;
}
delete [] tabStrings;
tabStrings=NULL;
Et autre question du même style, si on fait un tableau de pointeurs vers des classes :
Class A
{
int *tabInt;
char *string;
A()
{
tabInt=new int[50];
string=new char[50];
}
~A()
{
delete [] tabInt;
tabInt=NULL;
delete [] string;
string=NULL;
}
};
tabPtClasseA **A;
int nb_classes_A=10;
tabPtClasseA = new A*[nb_classes_A];
for(int i=0; i<nb_classes_A; i++)
tabPtClasseA[i] = new A();
Si on veut tout effacer y faut faire
delete [] tabPtClasseA;
tabPtClasseA=NULL;
ou alors
for(i=0;i<nb_classes_A;i++)
{
delete tabPtClasseA[i];
tabPtClasseA[i]=NULL;
}
delete [] tabPtClasseA;
tabPtClasseA=NULL;
Désolé c l'embrouille totale, à l'aide!