2010-02-01 13 views
13

lo tanto, tengo un vector¿Por qué no puedo indexar un std :: vector en la ventana inmediata?

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

lleno yo, este vector, y se puede acceder a ella como

std::string temp = lines[0]; 

Sin embargo, en la ventana inmediata, tanto

lines[0] - error:overloaded operator not found 

y

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

no funcionan en absoluto. ¿Hay algún truco para usar la ventana inmediata con C++? Principalmente provengo de un fondo C#, donde todo funciona bien (y tengo intellisense en la Ventana Inmediata). No esperaba que C++ fuera genial, pero pensé que funcionaría para otras cosas además de los enteros. ¿Alguien puede decirme lo que estoy haciendo mal? Gracias.

Edit: Debo ser claro, nada realmente funciona en la ventana inmediata, esto es sólo un ejemplo simplificado

EDIT: Estoy en el modo de depuración

Respuesta

14

El inmediata y ver las ventanas no son compatibles operadores sobrecargados. Existe algo de soporte para imprimir contenedores estándar en su conjunto de una manera sensata (ver, por ejemplo, http://www.virtualdub.org/blog/pivot/entry.php?id=120), pero esto no se extiende a poder usar operator[] en ellos.

Esperemos que esto se mejore en las revisiones posteriores del depurador, pero por ahora, para ver el elemento i-ésimo de un vector, intente lines._Myfirst[i].

(_Myfirst, en las bibliotecas estándar que vienen con VC++, pasa a ser la variable miembro en un std::vector que apunta al primer elemento de la secuencia. Así que esto es sólo examinando un vector como si se tratara de cualquier otro objeto. Para resolver esto, tuve que mirar los encabezados ... no muy conveniente, pero espero que esto te ayude. Probablemente puedas hacer algo similar con los otros contenedores, pero tendrás que buscar en los encabezados para calcular cómo)

(Por cierto, si ha estado trabajando en C#, el depurador C++ probablemente parezca, en comparación, un poco menos resbaladizo en general, y este es solo un ejemplo de eso. Tengo la impresión de que hay Se ha trabajado mucho más en el lado CLR.)

+0

OK, gracias por la ayuda en eso, compra ¿por qué would .at() fail? – Steve

+0

Llamar a las funciones miembro en el reloj y ventanas inmediatas simplemente no parece funcionar tampoco. (He actualizado mi respuesta para mencionar la falta de habilidad; este es un segundo ejemplo). Sin embargo, por lo general, puedes llamar a funciones independientes. Molesto, pero puedes acostumbrarte, no es que tengas opción, por supuesto :) (Esperemos que las revisiones posteriores mejoren el lado de depuración nativo; ya es perfectamente útil, pero le falta el pulido que tiene el lado CLR). –

+0

.at() probablemente falla por el mismo motivo: está sobrecargado. – MSalters

-1

En las versiones de Visual Studio de hoy en día (p. 2013/2015) _La variable miembro primero ya no existe para una variable estándar :: vectorial. Use _C_begin en su lugar - significa para el ejemplo dado usar, p. Ej. lines._C_begin [i].

+1

¿Puede por favor elaborar su respuesta o hacerla más completa con un ejemplo? Esto puede ayudar al consultante a tener una idea más clara de lo que quiere decir. – itsols

Cuestiones relacionadas