繁体   English   中英

std :: array c ++ 11初始化程序语法错误

[英]std::array c++11 initializer syntax error

STD ::阵列即时通讯

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

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

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

您需要一个临时对象。

class myclass
{
  myclass()
  {
    myarr = std::array<int,5>{1,2,3,4,5};
  }
};

语法var = { values, ... }仅对初始化程序有效。 但是您在这里进行分配,而不是初始化。 c ++ 11此处更改的是,您现在可以对任何类类型(定义了适当的构造函数)进行这种类型的初始化,然后才对POD类型和数组起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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