130 votes

erreur de qualification supplémentaire 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 la source, je me suis

erreur: qualification supplémentaire 'JSONDeserializer ::' sur le membre 'ParseValue'

Qu'est-ce que c'est? Comment puis-je supprimer cette erreur?

241voto

Sylvain Defresne Points 15231

C'est parce que vous avez le code suivant:

class JSONDeserializer
{
    Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
};

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).

class JSONDeserializer
{
    Value ParseValue(TDR type, const json_string& valueString);
};

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.

22voto

joe_coolish Points 3220

Cela signifie qu'une classe est mentionnée de manière redondante avec une fonction de classe. Essayez de supprimer JSONDeserializer::

14voto

Boaz Yaniv Points 4012

Mettez-vous cette ligne dans la déclaration de classe? Dans ce cas, vous devez supprimer les JSONDeserializer:: .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X