Pergunta

Estou realmente começando a entender o que as pessoas querem dizer quando dizem que as mensagens de erro do C++ são terríveis em relação aos modelos.Já vi erros terrivelmente longos para coisas tão simples como uma função que não corresponde ao seu protótipo.

Existem truques para decifrar esses erros?

EDITAR:Estou usando gcc e MSVC.Ambos parecem ser terríveis.

Foi útil?

Solução

Você pode tentar a seguinte ferramenta para tornar as coisas mais sensatas:

http://www.bdsoft.com/tools/stlfilt.html

Outras dicas

Eu com certeza não posso.Pequenos erros explodem em páginas e mais páginas de lixo ilegível.Geralmente de manhã cedo, antes do café.:(

Meu único conselho é respirar fundo, começar do topo e tentar analisar as informações importantes.(Eu sei, é mais fácil falar do que fazer, certo?).

Como @Sanders disse STLFilt é uma boa solução.Um STLFilt caseiro (quando você não quer se dar ao trabalho de instalar o Perl) é copiar a mensagem de erro em um editor e começar a substituir partes do erro até que ele se torne (mais) gerenciável.

por exemplo.

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 

Em termos menos geeks, isso significa:

Substituir:

std::basic_string<char,std::char_traits<char>,std::allocator<char>>

Com:

string

Alguns compiladores fornecem mensagens melhores que outros.Qual compilador você está usando?Dito isto, eles são todos muito ruins.C++0X resolverá a maior parte deste problema (veja conceitos), mas o padrão não será lançado antes de 2009, e o amplo suporte provavelmente ocorrerá ainda mais tarde :-(

Pelo menos no Visual Studio, há mais informações fornecidas na janela Output Build em vez da lista de erros.Ocorreu um erro de modelo no estado da Lista de Erros, "Não é possível converter Foo<int> em Foo<int>".Houve algumas linhas após o erro real na janela Saída que me ajudaram a decifrar qual era o problema real.

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