0

私はc++プログラムを作成し、その中にarrayオブジェクトとインクルード<array>ヘッダーファイルを使用しましたが、それを使用してコンパイルしようとするg++と、「配列はこのスコープで宣言されていません」という多くのエラーメッセージが返されます。何が悪いのか。プログラムはこちら:

#include <iostream>
#include <string>
#include <array>

using namespace std;

const int Seasons = 4;
const array<string, Seasons> Snames =
 {"spring", "summer", "fall", "winter"};

void fill(array<double, Seasons>* pa);
void show(array<double, Seasons> da);

int main()
{
array<double, Seasons> expenses;
fill(&expenses);
show(expenses);

return 0;
}

void fill(array<double, Seasons>* pa)
{
 for(int i = 0; i < Seasons; i++)
 {
    cout << "Enter " << Snames[i] << " expenses: ";
    cin >> *pa[i];
 }
}

void show(array<double, Seasons> da)
{
double total = 0.0;
cout << "\nEXPENSES\n";

 for(int i = 0; i < Seasons; i++)
 {
    cout << Snames[i] << ": $" << da[i] << endl;
    total += da[i];
 }
cout << "Total Expenses: $" << total << endl;
}
4

3 に答える 3

7

プログラムがコンパイルされない最も可能性の高い理由は、<array>ヘッダーがC11以前のコンパイラと互換性がないことです。追加

-std=c++0x

g ++のフラグに追加して、C++11サポートを有効にします。一度実行すると、28行目は次のようになるはずなので、別のエラーが発生します。

cin >> (*pa)[i];

編集済み;元の回答はへの参照が欠落していることを示唆しましたstd::

于 2012-11-16T22:09:06.773 に答える
1

これは呼ばれます-すべての標準ライブラリクラスまたは関数[テンプレート]のように、名前空間修飾子がstd::arrayプレフィックスとして付けられます。std::

于 2012-11-16T22:09:32.607 に答える
1

#includeの後に以下のいずれかを追加します。

using namespace std;
using std::array;
于 2012-11-16T22:09:34.537 に答える