Question

Alors, j'ai un vecteur

 std::vector<std::string> lines. 

Je remplis ce vecteur, et peut y accéder comme

 std::string temp = lines[0];

Cependant, dans la fenêtre immédiate, à la fois

 lines[0] - error:overloaded operator not found

et

 lines.at(0) - error:symbol is ambiguous

ne fonctionnent pas du tout. Y at-il une astuce pour utiliser la fenêtre immédiate avec c ++. Je suis surtout venant d'un arrière-plan C #, où tout fonctionne bien (et je IntelliSense dans la fenêtre immédiate). Je ne m'y attendais pas C ++ pour être grand, mais je pensais que ça marcherait pour des choses en plus ints. Quelqu'un peut-il me dire ce que je fais mal? Merci.

EDIT: Je devrais être clair, rien ne fonctionne vraiment dans la fenêtre immédiate, ceci est juste un exemple simplifié

EDIT: Je suis en mode débogage

Était-ce utile?

La solution

Les fenêtres immédiates et regarder ne prennent pas en charge les opérateurs surchargés. Il y a un certain soutien là-bas pour l'impression des conteneurs standard dans son ensemble de manière sensible (voir, par exemple, http://www.virtualdub.org/blog/pivot/entry.php?id=120 ), mais cela ne va pas être en mesure d'utiliser operator[] sur eux.

Espérons que cela sera améliorée dans les révisions ultérieures du débogueur, mais pour l'instant, à regarder l'élément i'th d'un vecteur, essayez lines._Myfirst[i].

(_Myfirst, dans les bibliothèques standard qui viennent avec VC ++, se trouve être la variable membre dans un std::vector qui pointe vers le premier élément de la séquence. Donc, cela vient d'examiner un vecteur comme si elle était tout autre objet. Pour nous en sortir, je devais regarder les en-têtes ... pas très pratique, mais nous espérons que cela vous aidera. vous pouvez sans doute faire quelque chose de similaire avec les autres conteneurs, mais vous devrez regarder dans les en-têtes de comprendre comment .)

(Soit dit en passant, si vous avez travaillé en C #, C ++ débogueur semble probablement par comparaison un peu moins lisse en général, ce qui est juste un exemple. J'ai l'impression qu'il ya eu beaucoup plus de travail mettre dans le côté CLR).

Autres conseils

Dans Visual Studio versions de Nowaday (par exemple 2013/2015) variable membre _Myfirst n'existe plus pour un std :: variable vecteur. Utilisez _C_begin à la place - des moyens pour utiliser l'exemple donné par exemple lines._C_begin [i].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top