1

2つのヘッダーファイルがあり、ヘッダーファイル2のヘッダーファイル1の変数のいくつかが必要です。ここに役立つ情報があります。

int SelRace, ...
char Race[80], ...

これら2つはヘッダーファイル1からのものであり、if()ステートメントに従うためにヘッダーファイル2のこれらの値が必要です。ヘッダーファイル1では、SelRaceに1、2、または3が割り当てられており、それが完了した後、もう一度呼び出しようとしています。ヘッダーファイル2で必要な場所は次のとおりです。

while (1)
{
    if(SelRace == 1)
    {
        cout << "[text here]" << endl;
    }
        else if(SelRace == 2)
    {
        cout << "[text here]" << endl;
    }
        else if(SelRace == 3)
    {
        cout << "[text here]" << endl;
    }
        else
    {
        cout << endl;
    }
}

Race [80]は、まだ記入していないため、[ここのテキスト]のさまざまな場所で転載されます。SelRaceの値に応じて、Race[80]にも異なる文字列が書き込まれます。

では、どうすればこれを行うことができますか?

4

4 に答える 4

6

あなたがすべき

  • .cpp現在行っているようにではなく、でそれらを定義し.hます。
  • それらをexternとして宣言します.h
  • .h上記を2番目に含める.cpp

ステップ2と3は.cpp、billzが示唆するように、それらをexternとして宣言することでマージできます。これは、これらのグローバルをどの程度広く使用するかによって異なります。

于 2013-01-31T09:14:43.747 に答える
2

ヘッダーファイルに変数定義を入れないでください。そうした場合、変数には複数の定義があるため、それらを複数のソースファイルに含めることはできません。

代わりに、定義をソースファイルに入れ、宣言をヘッダーファイルに入れます。次に、変数を使用する必要があるすべてのソースファイルにヘッダーファイルをインクルードできます。

宣言externは、次のような宣言である必要があります。

extern int SelRace;
extern char Race[80];

このexternキーワードは、変数が別の場所で定義されていることをコンパイラーに通知するため、リンカーが適切に参照できるようにします。

于 2013-01-31T09:14:53.267 に答える
1

次のように、あるヘッダーファイルでextern変数を定義し、別のヘッダーファイルでそれを使用できます。

extern int SelRace;
于 2013-01-31T09:14:48.710 に答える
0

ヘッダーファイルでは、関数プロトタイプのみを宣言します。定義をcppファイルに入れ、定義が1つだけであることを確認しexternますが、変数を使用する必要がある場合は使用します。

one.cpp

int SelRace, ...
char Race[80], ...

another.cpp

extern int SelRace, ...
extern char Race[80], ...

あなたが持っている関数定義は、while loopヘッダーファイルではなくcppファイルに行く必要があります。

于 2013-01-31T09:15:10.097 に答える