Mam funkcję członka, która jest zdefiniowana w następujący sposób:
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
Kiedy kompiluję źródło, otrzymuję:
błąd: dodatkowa kwalifikacja „JSONDeserializer ::” w elemencie „ParseValue”
Co to jest? Jak usunąć ten błąd?
c++
g++
compiler-errors
prosseek
źródło
źródło
Oznacza to, że klasa jest redundantnie wspominana z funkcją klasy. Spróbuj usunąć
JSONDeserializer::
źródło
Czy umieszczasz ten wiersz wewnątrz deklaracji klasy? W takim przypadku należy usunąć plik
JSONDeserializer::
.źródło
Godna uwaga dotycząca czytelności / łatwości konserwacji:
JSONDeserializer::
Kwalifikator można zachować wraz z definicją w pliku implementacji (* .cpp).Dopóki twoja deklaracja w klasie (jak wspominali inni) nie ma kwalifikatora, g ++ / gcc będzie działał dobrze.
Na przykład:
W myFile.h:
A w myFile.cpp:
Kiedy myFile.cpp implementuje metody z wielu klas, wystarczy spojrzeć na definicję, aby wiedzieć, kto należy do kogo.
źródło
JSONDeserializer::
dla pliku CPP (lub ogólnie definicji) jest wymagana. W przeciwnym razie otrzymasz niezdefiniowane odniesienie. coliru.stacked-crooked.com/a/8f8a0cd3f9db6c94 coliru.stacked-crooked.com/a/6cd1efe94c09d521