Как инициализировать массив 'int' как член класса в С++ 11?

Хорошо, простой вопрос, но я НЕ МОГУ найти ответ, который у меня был до этого...

Вот.

Я обновил свой компилятор и т.д. До С++ 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[];
}

И все равно ничего... Я не могу понять, что это такое и пробивает мне голову против Google, потраченного впустую 2 часа программирования...

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};
}
</int,5></int,5></array>

Кроме того, скопируйте содержимое:

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
}

licensed under cc by-sa 3.0 with attribution.