Dies ist kein gültiges C ++, aber Visual Studio scheint es zu akzeptieren. Sie müssen es in den folgenden Code ändern, um es mit einem standardkompatiblen Compiler kompilieren zu können (gcc entspricht in diesem Punkt eher dem Standard).
Der Fehler JSONDeserializer::ParseValueergibt sich aus der Tatsache, dass es sich um einen qualifizierten Namen handelt (ein Name mit einer Namespace-Qualifikation), und ein solcher Name ist als Methodenname in einer Klasse verboten.
Gibt es eine Möglichkeit, Visual Studio davor zu warnen?
Altumano
1
@altumano: Nein, aber Cppcheck kann das und erkennt auch Nicht-ASCII-Zeichen in Bezeichnern, wodurch der Code für gcc portabler bleibt.
Scharfzahn
@sharptooth: Danke, Cppcheck kann diese Fehler tatsächlich erkennen. Es gibt sogar ein Visual Studio-Plugin für Cppcheck (aber es ist fehlerhaft und wird nicht in allen Dateien
erkannt
3
@altumano: Ist es das Ding github.com/VioletGiraffe/cppcheck-vs-addin ? Wenn ja, könnten Sie bitte den Fehler melden - das Projekt ist ziemlich lebendig und es besteht eine gute Chance, dass es behoben wird.
Dies bedeutet, dass eine Klasse mit einer Klassenfunktion redundant erwähnt wird. Versuchen Sie es zu entfernen
JSONDeserializer::
quelle
Fügen Sie diese Zeile in die Klassendeklaration ein? In diesem Fall sollten Sie die entfernen
JSONDeserializer::
.quelle
Ein Hinweis für die Lesbarkeit / Wartbarkeit:
Sie können das
JSONDeserializer::
Qualifikationsmerkmal mit der Definition in Ihrer Implementierungsdatei (* .cpp) behalten.Solange Ihre In-Class-Deklaration (wie von anderen erwähnt) nicht über das Qualifikationsmerkmal verfügt, spielt g ++ / gcc eine gute Rolle.
Beispielsweise:
In myFile.h:
Und in myFile.cpp:
Wenn myFile.cpp Methoden aus vielen Klassen implementiert, ist es hilfreich zu wissen, wer zu wem gehört, indem Sie sich nur die Definition ansehen.
quelle
JSONDeserializer::
für die cpp-Datei (oder die Definition im Allgemeinen) ist erforderlich. Andernfalls erhalten Sie eine undefinierte Referenz. coliru.stacked-crooked.com/a/8f8a0cd3f9db6c94 coliru.stacked-crooked.com/a/6cd1efe94c09d521