如何在c ++ 11中初始化'int'数组作为类成员?

时间:2013-08-07 00:45:26

标签: c++ arrays c++11 integer

好的,一个简单的问题,但我找不到我以前的答案......

在这里。

我将我的编译器更新为c ++ 11,由于这个原因,我无法事先初始化数组。这是代码:

class Something{
public:
    int array[5];
    void doSomething();
};

void Something::doSomething()
{
    array={1,2,3,4,5};
}

这事先完全没问题,我把它实现到我的新项目中(但由于最近融化而丢失了代码......)并且不记得我是如何为我的生活做的。我知道它非常相似,但每次尝试都会出错。我甚至尝试过:

class Something{
public:
    int array[5];
    void doSomething();
};

void Something::doSomething()
{
    int Temparray[]={1,2,3,4,5};
    array[]=Temparray[];
}

但仍然一无所获......我无法弄清楚它是什么,并且抨击谷歌浪费了2个小时的编程......

1 个答案:

答案 0 :(得分:1)

我建议std::array

#include <array>

class Something{
public:
    std::array<int,5> array;
    void doSomething();
};

void Something::doSomething()
{
    array = std::array<int,5>{1,2,3,4,5};
}

或者,复制内容:

class Something{
public:
    int array[5];
    void doSomething();
};

void Something::doSomething()
{
    int tmp[] = {1,2,3,4,5};
    std::copy(
            std::begin(tmp), 
            std::end(tmp), 
            std::begin(array)); // beware of buffer overrun
}