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
}

MinGW4.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 に答える