我的問題是,當我想要下載庫時,我從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