Mi problema es que cuando quiero hacer una biblioteca descargada obtengo algunos errores de compilación extraños de GCC y el código que el compilador exige corregir parece ser el correcto.GCC error de compilación: la declaración de 'strlen' debe estar disponible
Los errores son todas como esta:
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
Este es el código alrededor de la línea 96:
GaCatalogueEntry(const char* name, T* data)
{
if(name)
{
_nameLength = (int)strlen(name); // LINE 96
// copy name
_name = new char[ _nameLength + 1 ];
strcpy(_name, name); // LINE 100: similar error
_data = data;
return;
}
_name = NULL;
_nameLength = 0;
_data = NULL;
}
¿Qué puedo hacer yo para corregir estos errores de compilación?
Parece que tienes un conjunto de globales con nombres que coinciden con '_ [a-z]. *', Esos nombres están reservados para la implementación. ('_ [a-z]. *' está bien para nombres no globales como variables locales y miembros de la clase) – MSalters
No creo que sean globales, sino variables de miembros. Supongo que GaCatalogueEntry es una función miembro en una clase de plantilla. Pero tiene razón, es peligroso tener una convención de nomenclatura que incluya prefijos de subrayado. Para las variables miembro, es mejor usar el prefijo m_ o el sufijo _. –