问题
the std::array im getting
no match for ‘operator=’ in ‘myarr = {1, 5, 2, 3, 4}’
error when compiling this code
#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;
}
but it compiles when i do it on the same line
array<int, 5> myarr = {1,5,2,3,4};
how to assign values on the seprate line
i need to assign values in the class constructor how can i do it ?
class myclass
{
myclass()
{
myarr = {1,2,3,4,5}; /// how to assign it // it gives errors
}
};
回答1:
Instead of the one pair of braces you need two.
myarray = {{1,2,3,4,5}};
回答2:
You need a temporary object.
class myclass
{
myclass()
{
myarr = std::array<int,5>{1,2,3,4,5};
}
};
The syntax var = { values, ... }
is only valid for initializers. But you do an assignment here, not an initialization. What c++11 changed here is that you can do this type of initialization now for any class type (where the appropriate constructor is defined), before it worked only on POD types and arrays.
来源:https://stackoverflow.com/questions/9314727/stdarray-c11-initializer-syntax-error