Domanda

Così, ho un vettore

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

I riempire questo vettore, e può accedervi come

 std::string temp = lines[0];

Tuttavia, nella finestra immediata, sia

 lines[0] - error:overloaded operator not found

e

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

non funzionano affatto. C'è un trucco per utilizzando la finestra immediata con C ++. Sono per lo più proveniente da un background C #, dove tutto funziona bene (e ho intellisense nella finestra immediata). Non mi aspettavo C ++ per essere grande, ma ho pensato che avrebbe funzionato per cose oltre int. Qualcuno può dirmi che cosa sto facendo male? Grazie.

EDIT: Vorrei essere chiaro, niente funziona davvero nella finestra immediata, questo è solo un esempio semplificato

EDIT: Sono in modalità debug

È stato utile?

Soluzione

Le finestre immediate e orologi non supportano gli operatori di overload. C'è qualche supporto in là per la stampa di contenitori standard nel suo complesso in modo sensibile (vedi, ad esempio, rel, http://www.virtualdub.org/blog/pivot/entry.php?id=120 ), ma questo non si estende ad essere in grado di utilizzare operator[] su di loro.

Speriamo che questo sarà migliorata nelle revisioni successive del debugger, ma per ora, a guardare l'elemento-esimo di un vettore, prova lines._Myfirst[i].

(_Myfirst, nelle librerie standard forniti con VC ++, sembra essere il membro variabile in un std::vector che punta al primo elemento della sequenza. Quindi questo è solo esaminando un vettore, come se si trattasse di qualsiasi altro oggetto. Per lavorare su questo, ho dovuto guardare le intestazioni ... abbastanza difficile, ma spero che questo vi aiuterà. probabilmente si può fare qualcosa di simile con gli altri contenitori, ma dovrete cercare nelle intestazioni di capire come .)

(A proposito, se hai lavorato in C #, il debugger C ++ sarà probabilmente sembrare al confronto un po 'meno chiazza di petrolio, in generale, e questo è solo un esempio di questo. Ho l'impressione che ci sia stato molto più lavoro mettere nel lato CLR).

Altri suggerimenti

Nelle versioni di Visual Studio di modernizato (ad esempio 2013/2015) variabile membro _Myfirst non esiste più di una variabile std :: vector. Uso _C_begin invece - mezzi per l'esempio dato uso es lines._C_begin [i].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top