C'est un extrait de code que j'utilise:Attribution de valeurs aux pointeurs en C++
void Move::AddToMovesList(Location* &list, int row, int col) {
// If the list is empty, create the first item
if (list == NULL)
list = new Location(row, col);
// List exists, so append
else
list->Add(row, col);
}
Si list
est NULL
, une nouvelle Location
devrait être créé et le pointeur list
doit pointer vers ce nouvel emplacement. C'est le comportement que j'attendrais de ce code, mais juste avant que gdb ne quitte cette fonction, j'ai remarqué que list
est toujours NULL
. Qu'est-ce que je fais mal ici?
J'ai utilisé l'esperluette dans Location* &list
pour vous assurer que je peux en permanence (par rapport au niveau local) changer le pointeur fourni.
Personnellement, je n'utiliserais pas de pointeur. Vous représentez la liste vide en tant que pointeur NULL. Cela signifie que vous devez ajouter du code pour le vérifier explicitement partout dans votre code. Créez un objet (qui représente initialement la liste vide) puis ajoutez simplement des membres sans qu'aucun cas particulier ne soit requis. –
Votre code devrait fonctionner, avez-vous désactivé les optimisations lors du débogage? –
Je ne sais pas si je sais de quoi vous parlez, Vincent. J'utilise gdb dans Eclipse avec les paramètres par défaut. Je suis sur Windows et j'utilise le compilateur MinGW C++. – Pieter