std :: array 我得到了
no match for ‘operator=’ in ‘myarr = {1, 5, 2, 3, 4}’
编译此代码时出现错误
#include <iostream>
#include <array>
using namespace std;
int main(int argc, char const *argv[])
{
array<int, 5> myarr;
myarr = {1,5,2,3,4};
for(auto i : myarr)
{
cout << i << endl;
}
return 0;
}
但是当我在同一行上进行编译时会编译
array<int, 5> myarr = {1,5,2,3,4};
如何在分隔线上分配值
我需要在类构造函数中赋值,我该怎么办?
class myclass
{
myclass()
{
myarr = {1,2,3,4,5}; /// how to assign it // it gives errors
}
};
答案 0 :(得分:6)
而不是一对括号,你需要两个。
myarray = {{1,2,3,4,5}};
答案 1 :(得分:-1)
您需要一个临时对象。
class myclass
{
myclass()
{
myarr = std::array<int,5>{1,2,3,4,5};
}
};
语法var = { values, ... }
仅对初始值设定项有效。但是你在这里做了一个任务,而不是初始化。这里改变的是c ++ 11,你现在可以为任何类类型(定义适当的构造函数)进行这种类型的初始化,之后它只能在POD类型和数组上工作。