C++ ではクラス/関数の順序は重要ですか? 質問する

C++ ではクラス/関数の順序は重要ですか? 質問する

私は C++ を学び始めています。IDE コードブロックでは、次のようにコンパイルされます。

#include <iostream>
using namespace std;

struct A {};

struct B {
    A a;
}

void hi() {
    cout << "hi" << endl;
}

int main() {
    hi();
    return 0;
}

しかし、これは当てはまりません:

struct B {
    A a;
}

struct A {};

int main() {
    hi();
    return 0;
}

void hi() {
    cout << "hi" << endl;
}

次のエラーが発生します:

error: 'A' does not name a type
error: 'hi' was not declared in this scope

C++ ではクラス/関数の順序は重要ですか? 重要ではないと思いました。問題を明確にしてください。

ベストアンサー1

はい、少なくとも宣言する実際の定義が後になってからであっても、クラス/関数を使用/呼び出す前に定義します。

そのため、クラス/関数をヘッダー ファイルで宣言し、次に#includecpp ファイルの先頭で宣言することがよくあります。クラス/関数はすでに効果的に宣言されているため、任意の順序で使用できます。

あなたの場合はこれを実行できたことに注意してください。(実例

void hi();    // This function is now declared

struct A; // This type is now declared

struct B {
    A* a; // we can now have a pointer to it
};

int main() {
    hi();
    return 0;
}

void hi() {    // Even though the definition is afterwards
    cout << "hi" << endl;
}

struct A {}; // now A has a definition

おすすめ記事