数组未在此范围内声明
array was not declared in this scope
我编写了一个 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] 一样。
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明