Pregunta

Realmente estoy empezando a entender lo que la gente quiere decir cuando dice que los mensajes de error de C++ son bastante terribles en lo que respecta a las plantillas.He visto errores terriblemente largos para cosas tan simples como una función que no coincide con su prototipo.

¿Existe algún truco para descifrar estos errores?

EDITAR:Estoy usando gcc y MSVC.Ambos parecen ser bastante terribles.

¿Fue útil?

Solución

Puede probar la siguiente herramienta para hacer las cosas más sensatas:

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

Otros consejos

Estoy seguro que no puedo.Los pequeños errores explotan en páginas y páginas de basura ilegible.Generalmente temprano en la mañana, antes del café.:(

Mi único consejo es respirar profundamente, comenzar desde arriba e intentar analizar la información importante.(Lo sé, es más fácil decirlo que hacerlo, ¿verdad?).

Como @nsanders dicho STLFilt es una buena solución.Un STLFilt de cosecha propia (cuando no quiere tomarse la molestia de instalar Perl) es copiar el mensaje de error en un editor y comenzar a reemplazar partes del error hasta que se vuelva (más) manejable.

p.ej.

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

En términos menos geek, esto significa:

Reemplazar:

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

Con:

string

Algunos compiladores dan mejores mensajes que otros.Qué compilador estas usando?Dicho esto, todos son bastante malos.C++ 0X solucionará la mayor parte de este problema (consulte conceptos), pero el estándar no se publicará hasta 2009, y el soporte general probablemente llegará incluso más tarde :-(

Al menos en Visual Studio, se proporciona más información en la ventana Generación de resultados en lugar de en la Lista de errores.Tuve un error de plantilla en el estado de la Lista de errores: "No se puede convertir Foo<int> a Foo<int>".Hubo algunas líneas después del error real en la ventana Salida que me ayudaron a descifrar cuál era el problema real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top