Mój problem polega na tym, że kiedy chcę pobrać pobraną bibliotekę, otrzymuję dziwne błędy kompilacji od GCC, a kod, który kompilator żąda poprawienia, wydaje się słuszny.Błąd kompilacji GCC: deklaracja 'strlen' musi być dostępna
Błędy są tak:
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
Oto kod wokół linii 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;
}
Co mogę zrobić, aby naprawić te błędy kompilacji?
Wygląda na to, że masz zestaw globałów o nazwach pasujących do '_ [a-z]. *", Te nazwy są zarezerwowane dla implementacji. ('_ [a-z]. *' jest poprawne w przypadku nazw nie globalnych, takich jak zmienne lokalne i elementy klasy) – MSalters
Nie sądzę, że są to globale, ale raczej zmienne składowe. Zgaduję, że GaCatalogueEntry jest funkcją składową w klasie szablonowej. Ale masz rację, niebezpiecznie jest mieć konwencję nazewnictwa, która obejmuje prefiksy podkreślenia. W przypadku zmiennych składowych lepiej jest użyć przedrostka m_ lub sufiksu _. –