我的问题是,当我想要下载库时,我从GCC得到一些奇怪的编译错误,编译器要求纠正的代码似乎是正确的。GCC编译错误:声明'strlen'必须可用
的错误都是这样的:
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
这里是围绕线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;
}
我能做些什么来解决这些编译错误?
看起来你有一组名称与'_ [a-z]。*'匹配的全局变量,这些名称是为实现保留的。 ('_ [a-z]。*'适用于非全局名称,如本地变量和类成员) – MSalters 2009-10-27 09:16:38
我不认为它们是全局变量 - 而是成员变量。我猜GaCatalogueEntry是模板类中的成员函数。但是你是对的,有一个涉及下划线前缀的命名约定是危险的。对于成员变量,最好使用m_前缀或_后缀。 – 2009-10-27 09:26:43