0

这段代码有什么问题:

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
}

使用 MinGW 4.6.2。

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

4

2 回答 2

6

在函数之外,您只能放置声明/定义。要执行类似的东西he.h();,该代码需要进入一个函数。

于 2013-01-04T04:24:51.957 回答
5

在最上层,每个 C++ 翻译单元必须由声明组成

translation-unit: 
  declaration-seq[opt]

declaration-seq:
  declaration
  declaration-seq declaration

Burhe.h();不是声明。因此错误。

您可以引入一个虚拟变量将其转换为声明

int dummy = he.h();

并且代码将编译。但是原版是非法的。

于 2013-01-04T04:30:37.123 回答