简体   繁体   中英

std::array c++11 initializer syntax error

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
  }
};

而不是一对括号,您需要两个。

myarray = {{1,2,3,4,5}};

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM