このコードの何が問題になっていますか?
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の使用。
注:私はコンパイルのみを行っており、リンクは行っていません。
このコードの何が問題になっていますか?
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の使用。
注:私はコンパイルのみを行っており、リンクは行っていません。
関数の外では、宣言/定義のみを置くことができます。のようなものを実行するにはhe.h();
、そのコードを関数に入れる必要があります。
最上位レベルでは、各C++変換ユニットは宣言で構成されている必要があります
translation-unit:
declaration-seq[opt]
declaration-seq:
declaration
declaration-seq declaration
Burhe.h();
は宣言ではありません。したがって、エラー。
ダミー変数を導入して宣言に変えることができます
int dummy = he.h();
コードがコンパイルされます。しかし、元のバージョンは違法です。