【问题标题】:How would I initialize an array of 'int' as a class member in c++11?如何在 c++11 中将“int”数组初始化为类成员?
【发布时间】:2013-08-07 00:45:26
【问题描述】:

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

在这里。

我将我的编译器等更新为 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 个小时的编程...

【问题讨论】:

  • 这从未奏效。您似乎一直依赖于某些编译器扩展、某种错误,或者仅仅是您的错误记忆。

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


【解决方案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
}

【讨论】:

  • 好吧,我想我将不得不处理这个问题。我仍然可以将array[x] 与第一个选项一起使用,对吗?
  • @Molma 是的,实际上都是
  • 两次尝试都出现错误:1) array is not a member of std。 2)begin is not a member of std...
  • 找到替代解决方案的替代方案:std::copy(tmp,tmp+4,array); 完美运行 :)
  • 也许你错过了#include &lt;array&gt;#include &lt;iterator&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
相关资源
最近更新 更多