pro*_*eek 108 c++ compiler-errors g++
我有一个成员函数,定义如下:
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
Run Code Online (Sandbox Code Playgroud)
当我编译源代码时,我得到:
错误:成员'ParseValue'上的额外限定'JSONDeserializer ::'
这是什么?如何删除此错误?
Syl*_*sne 197
这是因为您有以下代码:
class JSONDeserializer
{
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString);
};
Run Code Online (Sandbox Code Playgroud)
这不是有效的C++,但Visual Studio似乎接受它.您需要将其更改为以下代码才能使用标准兼容编译器进行编译(gcc在此方面更符合标准).
class JSONDeserializer
{
Value ParseValue(TDR type, const json_string& valueString);
};
Run Code Online (Sandbox Code Playgroud)
该错误来自于JSONDeserializer::ParseValue一个限定名称(具有名称空间限定名称)的事实,并且这样的名称被禁止作为类中的方法名称.
值得注意的是可读性/可维护性:
您可以JSONDeserializer::在实现文件(*.cpp)中使用定义保留限定符.
只要您的课堂声明(如其他人所述)没有限定符,g ++/gcc就会很好用.
例如:
在myFile.h中:
class JSONDeserializer
{
Value ParseValue(TDR type, const json_string& valueString);
};
Run Code Online (Sandbox Code Playgroud)
在myFile.cpp中:
Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString)
{
do_something(type, valueString);
}
Run Code Online (Sandbox Code Playgroud)
当myFile.cpp实现来自许多类的方法时,仅通过查看定义就有助于知道谁属于谁.
当我的头文件缺少右括号时,我看到了此错误。
导致这个错误的原因:
// Obj.h
class Obj {
public:
Obj();
Run Code Online (Sandbox Code Playgroud)
修复此错误:
// Obj.h
class Obj {
public:
Obj();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137921 次 |
| 最近记录: |