la base de l'opérande de ‘->’ a la non-type de pointeur
D'abord, le code:
//...
struct node_list {
node_list *prev;
node *target; //node is defined elsewhere in the application
node_list *next;
};
node_list nl_head;
int main() {
nl_head->prev = &nl_head;
//...
return 0;
}
J'obtiens une erreur:
make (in directory: #####)
g++ -Wall -std=c++11 -o main main.cc
main.cc: In function ‘int main(int, char**)’:
main.cc:38:9: error: base operand of ‘->’ has non-pointer type ‘node_list’
nl_head->prev = &nl_head;
^
Makefile:8: recipe for target 'main' failed
make: *** [main] Error 1
Compilation failed.
Autant que je peux dire à ma syntaxe est correcte. Quelqu'un peut-il point l'erreur?
Avant que quelqu'un le signale comme un doublon, je suis conscient qu'il est semblable à un couple d'autres questions, mais aucune de ses solutions ne semble fonctionner pour moi. Sauf si je fais erreur, ce qui je l'admets est possible, mais c'est pourquoi je suis ici.
OriginalL'auteur FatalKeystroke | 2013-12-15
Vous devez vous connecter pour publier un commentaire.
nl_head
n'est pas un pointeur. essayeznl_head.prev
Vous êtes les bienvenus 🙂
OriginalL'auteur edtheprogrammerguy
Comme le suggère le message d'erreur et que votre question titre.
nl_head
n'est pas un pointeur, donc vous ne pouvez pas utiliser le->
opérateur.Faire un pointeur. Vous aurez également besoin d'allouer de la mémoire avant de pouvoir l'utiliser.
Alternativement, vous pouvez pas faire un pointeur, mais au lieu d'utiliser l'opérateur de point d'accès de ses membres.
OriginalL'auteur ApplePie