1. ホーム
  2. c++

[解決済み】C++の余分な資格エラー

2022-01-24 20:27:30

質問内容

次のように定義されたメンバ関数があります。

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

ソースをコンパイルすると、こうなります。

error: extra qualification 'JSONDeserializer::' on member 'ParseValue'

これは何ですか?このエラーを取り除くにはどうしたらいいですか?

解決方法を教えてください。

これは、以下のようなコードになっているためです。

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

これは有効なC++ではありませんが、Visual Studioはこれを受け入れているようです。標準に準拠したコンパイラでコンパイルできるようにするには、次のコードに変更する必要があります (この点に関しては、gcc の方が標準に準拠しています)。

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

このエラーは JSONDeserializer::ParseValue は修飾名(名前空間修飾を伴う名前)であり、このような名前はクラスのメソッド名としては禁止されています。