错误:X未命名类型

Gha*_*san 0 c++

这段代码有什么问题:

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.

注意:我只是编译,而不是链接.

Jer*_*fin 6

在函数外部,您只能放置声明/定义.要执行类似的操作he.h();,代码需要进入函数.


AnT*_*AnT 5

在最上层,每个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)

并且代码将编译.但原始版本是非法的.