【发布时间】:2018-08-28 05:20:45
【问题描述】:
为什么当我尝试使用 const int std::array 时出现以下错误? 我必须将错误消息中的“
#include <array>
#include <iostream>
using namespace std;
int main() {
array<const int, 4> vals;
return 0;
}
test.cpp:在函数“int main()”中:
test.cpp:7:22: 错误:使用已删除的函数'std::array::array()'
数组 vals; ^~~~
在 test.cpp:1:0 包含的文件中: /usr/include/c++/7.3.0/array:94:12:注意:'std::array::array()' 被隐式删除,因为默认定义格式不正确: 结构数组 ^~~~~
/usr/include/c++/7.3.0/array:94:12: 错误:‘struct std::array’中未初始化的 const 成员
/usr/include/c++/7.3.0/array:110:56: 注意:'const int std::array::_M_elems [4]' 应该被初始化 类型名 _AT_Type::_Type _M_elems; ^~~~~~~~
【问题讨论】:
-
我认为最好将错误消息格式化为代码。至少,固定宽度的字体会使
^~~~部分更好地对齐。 -
那就初始化吧。
-
const int 使 int 无法更改(仅在初始化时)。在这里,您将无法在初始化后更改 vals,这个数组是无用的。要么删除 const,要么初始化它
array<const int, 4> vals = {1,2,3,4} -
你真的应该避免
using namespace std- 这是一个坏习惯,当你不期待它时can silently change the meaning of your program。习惯于使用命名空间前缀(std故意很短),或将只是您需要的名称 导入到最小合理范围。
标签: c++ arrays c++11 initialization constants