Pergunta

Então, eu tenho um vetor

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

Eu preencho este vetor e posso acessá -lo como

 std::string temp = lines[0];

No entanto, na janela imediata, ambos

 lines[0] - error:overloaded operator not found

e

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

Não funcione. Existe um truque para usar a janela imediata com C ++. Estou vindo principalmente de um fundo C#, onde tudo funciona bem (e tenho o IntelliSense na janela imediata). Eu não esperava que o C ++ fosse ótimo, mas achei que funcionaria para as coisas além do INTS. Alguém pode me dizer o que estou fazendo de errado? Obrigado.

EDIT: Eu deveria estar claro, nada realmente funciona na janela imediata, este é apenas um exemplo simplificado

Editar: estou no modo de depuração

Foi útil?

Solução

As janelas imediatas e de relógios não suportam operadores sobrecarregados. Há algum apoio lá para imprimir contêineres padrão como um todo de maneira sensata (ver, por exemplo, http://www.virtualdub.org/blog/pivot/entry.php?id=120), mas isso não se estende a poder usar operator[] neles.

Espero que isso seja melhorado nas revisões posteriores do depurador, mas por enquanto, para olhar para o elemento de um vetor, tente lines._Myfirst[i].

(_Myfirst, nas bibliotecas padrão que vêm com VC ++, é a variável de membro em um std::vector Isso aponta para o primeiro elemento da sequência. Portanto, isso está apenas examinando um vetor como se fosse algum outro objeto. Para resolver isso, eu tive que olhar para os cabeçalhos ... não muito conveniente, mas espero que isso o ajude. Você provavelmente pode fazer algo semelhante com os outros contêineres, mas terá que procurar nos cabeçalhos para descobrir como.)

(A propósito, se você trabalha em C#, o depurador C ++ provavelmente parecerá em comparação um pouco menos escorregadio em geral, e este é apenas um exemplo disso. Fico com a impressão de que houve muito mais trabalho colocado no Lado clr.)

Outras dicas

Nas versões do Visual Studio (por exemplo, 2013/2015) do Visual Studio (por exemplo, a variável de membro não existe mais para uma variável de vetor STD ::. Use _c_begin - significa para o exemplo dado, use linhas._c_begin [i].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top