J'ai une fonction membre définie comme suit:
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
Lorsque je compile la source, j'obtiens:
erreur: qualification supplémentaire 'JSONDeserializer ::' sur le membre 'ParseValue'
Qu'est-ce que c'est? Comment supprimer cette erreur?
c++
g++
compiler-errors
prosseek
la source
la source
Cela signifie qu'une classe est mentionnée de manière redondante avec une fonction de classe. Essayez de supprimer
JSONDeserializer::
la source
Mettez-vous cette ligne dans la déclaration de classe? Dans ce cas, vous devez supprimer le fichier
JSONDeserializer::
.la source
Une note intéressante pour la lisibilité / maintenabilité:
Vous pouvez conserver le
JSONDeserializer::
qualificatif avec la définition dans votre fichier d'implémentation (* .cpp).Tant que votre déclaration en classe (comme mentionné par d'autres) n'a pas le qualificatif, g ++ / gcc jouera bien.
Par exemple:
Dans myFile.h:
Et dans myFile.cpp:
Lorsque myFile.cpp implémente des méthodes de nombreuses classes, il est utile de savoir qui appartient à qui, simplement en regardant la définition.
la source
JSONDeserializer::
pour le fichier cpp (ou la définition en général) est requis. Sinon, vous obtenez une référence non définie. coliru.stacked-crooked.com/a/8f8a0cd3f9db6c94 coliru.stacked-crooked.com/a/6cd1efe94c09d521