“erreur: demande de membre de la "taille" dans "a", qui est de type pointeur” mais je ne pense pas que c'est un pointeur
Donc, j'ai pensé que j'essayais de faire quelque chose de simple, mais apparemment pas...
J'ai écrit cette fonction afin que je puisse l'étendre plus tard et d'avoir un moyen rapide pour donner à l'utilisateur un menu lorsque requis par la va menu(mystrings)
:
int menu(string a[]) {
int choice(0);
cout << "Make a selection" << endl;
for(int i=0; i<a.size(); i++) {
cout << i << ") " << a[i] << endl;
}
cin >> choice;
cout << endl;
return choice;
}
Mais pour une raison que j'obtiens:
main.cpp: In function ‘int menu(std::string*)’:
main.cpp:38:12: error: request for member ‘size’ in ‘a’, which is of pointer type ‘std::string* {aka std::basic_string<char>*}’ (maybe you meant to use ‘->’ ?)
int n = a.size();
lorsque j'essaie de compiler. Quelqu'un pourrait-il traduire cette erreur pour moi et expliquer ce que ->
est, je vous remercie.
Les tableaux ne sont pas des classes. Ils n'ont pas de fonctions membres. Utilisation
parce que[] est un*
Je suppose que vous faites
Ce qui est avec tous les downvotes? Ce n'est pas floue, et n'est pas nécessairement un manque d'effort et de recherche; c'est l'un des plus difficiles de choses sur le C++.
Merci beaucoup, je me demande aussi ce que j'ai fait de mal, quelqu'un qui downvoted s'il vous plaît laissez-moi savoir comment je pourrais améliorer mes questions dans l'avenir? J'étais vraiment confus par l'erreur en disant que j'avais un pointeur alors que je n'avais pas fait la demande.
std::array
ou std::vector
en fonction de vos besoins.parce que[] est un*
Je suppose que vous faites
using namespace std;
.Ce qui est avec tous les downvotes? Ce n'est pas floue, et n'est pas nécessairement un manque d'effort et de recherche; c'est l'un des plus difficiles de choses sur le C++.
Merci beaucoup, je me demande aussi ce que j'ai fait de mal, quelqu'un qui downvoted s'il vous plaît laissez-moi savoir comment je pourrais améliorer mes questions dans l'avenir? J'étais vraiment confus par l'erreur en disant que j'avais un pointeur alors que je n'avais pas fait la demande.
OriginalL'auteur Jamie Twells | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage à un tableau de
strings
et en essayant d'appelersize()
sur le tableau. Les tableaux de dégénérer à des pointeurs lorsqu'ils sont passés à une fonction, ce qui explique le message d'erreur.La
->
opérateur, ou "flèche de l'opérateur" (nom que j'utilise), c'est juste un raccourci pour(*obj).func()
. Ceci est utile si vous avez un pointeur vers un objet de classe. Exemple:Pourrais-je de la difficulté à vous pour plus d'informations? Je ne suis pas habitué à utiliser les pointeurs, comment dois-je utiliser le
->
opérateur, et a-t-elle un nom, afin que je puisse apprendre plus à ce sujet? Je vous remercie.Voir modifier
OriginalL'auteur yizzlez