这段代码有什么问题:
class C {
public:
int h();
};
C he; //Fine
he.h(); //Error: 'he' does not name a type
int main() {
C me; //Fine
me.h(); //Fine
}
Run Code Online (Sandbox Code Playgroud)
使用MinGW 4.6.2.
注意:我只是编译,而不是链接.
在最上层,每个C++翻译单元必须包含声明
translation-unit:
declaration-seq[opt]
declaration-seq:
declaration
declaration-seq declaration
Run Code Online (Sandbox Code Playgroud)
Bur he.h();不是宣言.因此错误.
您可以引入一个虚拟变量将其转换为声明
int dummy = he.h();
Run Code Online (Sandbox Code Playgroud)
并且代码将编译.但原始版本是非法的.