数组未在此范围内声明

array was not declared in this scope

本文关键字:范围内 声明 数组      更新时间:2023-10-16

我编写了一个 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 << "nEXPENSESn";
 for(int i = 0; i < Seasons; i++)
 {
    cout << Snames[i] << ": $" << da[i] << endl;
    total += da[i];
 }
cout << "Total Expenses: $" << total << endl;
}

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

-std=c++0x

以启用 C++11 支持。一旦你这样做,你会得到一个不同的错误,因为第 28 行应该是

cin >> (*pa)[i];

已编辑;原始答案建议缺少对std::的引用)

#include 后添加以下任一选项:

using namespace std;
using std::array;

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