J'ai un tableau de pointeurs d'objets CName. J'ai le constructeur suivant qui initialise mon tableau à la taille un. Puis, quand j'ajoute un objet, je développe le tableau de 1 et ajoute le nouvel objet. Il compile bien, mais quand j'essaie de les imprimer, je reçois juste une erreur de segmentation. Pouvez-vous regarder et voir si je fais quelque chose de mal?Création dynamique d'un tableau en C++
//constructor
Names_Book::Names_Book()
{
grow_factor = 1;
size = 0;
cNames = (CName**)malloc(grow_factor * sizeof(CName*));
cNames[0] = NULL;
}
void Names_Book::addCName(CName* cn)
{
int oldSize = size;
int newSize = size + 1;
CName** newCNames = (CName**)malloc(newSize * sizeof(CName*));
for(int i=0; i<newSize; i++)
{
newCNames[i] = cNames[i];
}
for(int i=oldSize; i<newSize; i++)
{
newCNames[i] = NULL;
}
/* copy current array to old array */
cNames = newCNames;
delete(newCNames);
size++;
}
Vous devez utiliser un vecteur. – JoshD
Vous mélangez 'malloc()' et 'delete' en C++? –
Ce n'est pas C++, c'est mauvais; Pardon. :/Vous devriez obtenir [un livre] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) et apprendre le bon C++. – GManNickG