数组未在此范围内声明

时间:2012-11-16 22:06:58

标签: c++ g++

我编写了一个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;
}

3 个答案:

答案 0 :(得分:7)

您的程序无法编译的最可能原因是<array>标头与C11之前的编译器不兼容。添加

-std=c++0x

到g ++的标志以启用C ++ 11支持。一旦你这样做,你就得到一个different error,因为第28行应该是

cin >> (*pa)[i];

已编辑;原始回答提示缺少对std::的引用)

答案 1 :(得分:1)

它被称为std::array - 它的前缀是std::名称空间限定符,就像每个标准库类或函数[模板]一样。

答案 2 :(得分:1)

在#include之后添加以下任一项:

using namespace std;
using std::array;