extra qualification erreur en C++
J'ai une fonction membre qui est définie comme suit:
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
Quand je compile le source, je reçois:
erreur: extra qualification 'JSONDeserializer::' membre 'ParseValue'
Qu'est-ce que cela? Comment puis-je supprimer cette erreur?
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous avez le code suivant:
Ce n'est pas valide en C++, mais Visual Studio semble l'accepter. Vous avez besoin de changer le code suivant pour être en mesure de le compiler avec un standard conforme compilateur (gcc est plus conforme à la norme sur ce point).
L'erreur vient du fait que
JSONDeserializer::ParseValue
est un nom qualifié (un nom avec un espace de noms de qualification), et ce nom est aussi interdit d'utiliser un nom de méthode dans une classe.Cela signifie que la classe est mentionné de manière redondante avec une fonction de classe. Essayez de supprimer
JSONDeserializer::
Êtes-vous de mettre cette ligne à l'intérieur de la déclaration de la classe? Dans ce cas, vous devez supprimer le
JSONDeserializer::
.Digne de remarque pour des raisons de lisibilité/maintenabilité:
Vous pouvez garder le
JSONDeserializer::
qualificatif à la définition de la mise en œuvre de fichier (*.rpc).Aussi longtemps que votre déclaration de classe (comme mentionné par d'autres) n'ont pas le qualificatif, g++/gcc jouera nice.
Par exemple:
Dans monfichier.h:
Et dans myFile.cpp:
Quand myFile.cpp met en œuvre des méthodes à partir d'un grand nombre de classes, il est utile de savoir qui appartient à qui, juste en regardant la définition.