Ошибка: присвоение массиву из списка инициализаторов - программирование

Ошибка: присвоение массиву из списка инициализаторов

У меня есть класс, например:

class dialog
{
    public:
    double dReturnType[][5][3];
};

 

#include <cstdlib>
#include <iostream>
include <string>

using namespace std;
#include "dialog.h";

int main(int argc, char *argv[])
{
    dialog People;
    People.dReturnType[0][1] = {1.2,2.3,6.6};
    return 0;
}

Он возвращает:

[Warning] расширенные списки инициализаторов доступны только с -std = С++ 11 или -std = gnu11 [включено по умолчанию] [Ошибка]: присвоение массиву из списка инициализаторов

Я немного искал его в Интернете и действительно не мог найти способ обойти это. Я бы предпочел не редактировать класс внутри него в файле класса (вроде бы поражает цель). Любая помощь?

Примечание: класс находится в отдельном файле проекта

4b9b3361

Ответ 1

Списки инициализаторов используются только во время инициализации.

Если вы хотите использовать std::initializer_list после инициализации:

auto init = std::initializer_list<double>({1.2,2.3,6.6});
std::copy(init.begin(), init.end(), your_array);

Ответ 2

Вы не можете инициализировать расширенный список, если не находитесь на С++ 11.

И если бы у вас была хорошая привычка - использовать * вместо пустого "[]" и выделять память, когда вы знаете размер (с новым или malloc). dReturn type в вашей программе - указатель на матчи.

И вы даете полный список только одному члену вектора.

People.dReturnType[0]={1.2,2.3,6.6};

Это имеет смысл.

Попробуйте инкапсулировать и использовать/создавать функции инициализатора, которые помогут вам это сделать. С++ поместит все 0 в начало, но вы можете сделать функцию и вызвать:

dialog People("the_atributes_are_here").

Хорошо, чтобы частные функции и функции dReturnType могли использовать данные и вставлять/изменять вещи. Но это зависит от вас.