1

ヘッダーがあり、構造のプロトタイプが含まれています。

struct UserDataStruct;

ヘッダーのソース ファイルには、ヘッダーと次の内容が含まれています。

struct UserDataStruct
{
    int instance;
};

メインのソース ファイルには、次のものがあります。

int main ()
{
    UserDataStruct lol;

    return 0;
}

Visual Studio 2010 で次のエラーが表示されるため、プログラムをコンパイルできないようです。

error C2079: 'lol' uses undefined struct 'UserDataStruct'

どうすればこれを機能させることができますか?

4

2 に答える 2

2

インスタンスを作成する前に、 の完全な定義がUserDataStruct必要です。この場合、前方宣言は十分ではありません。

構造体定義を .cpp ファイルからヘッダーに移動するだけです。

于 2013-01-04T02:59:11.703 に答える
0

これは機能しません。構造はmain()で完全に知っている必要があります。構造体の完全な宣言をヘッダーファイルに入れてから、メインの.cファイルにインクルードする必要があります。

他のヘッダーファイルでポインターを使用する場合にのみ、構造体/共用体/クラスを前方宣言できます(これが実行しているためです)。ただし、最終的には、.cファイルで完全な宣言を提供する必要があります。構造の内部を「隠す」ことはできません。

于 2013-01-04T03:01:55.800 に答える