Как инициализировать массив в объектах C++

После прочтения Как инициализировать массив в C, в частности:

Не упускайте из виду очевидное решение:

int myArray [10] = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5};

Пробовал примерно так:

#include 

class Something {
private:

int myArray[10];

public:

Something() {
    myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}

int ShowThingy(int what) {
    return myArray[what];
}

~Something() {}
};

int main () {
   Something Thing;
    std::cerr << Thing.ShowThingy(3);
}

И получаю:

..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:10:48: error: cannot convert '' to 'int' in assignment

Очевидное в данном случае не так очевидно. Я действительно хотел бы, чтобы инициация моего массива была более динамичной.

Я устал:

private:
    int * myArray;

public:
    Something() {
            myArray = new int [10];
            myArray = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}

Это выглядело странно для меня, и поэтому для компилятора:

..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:11:44: error: cannot convert '' to 'int*' in assignment

Это тоже не сработало:

private:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };

с:

 ..\src\Something.cpp:6:20: error: a brace-enclosed initializer is not allowed here before '{' token
 ..\src\Something.cpp:6:51: sorry, unimplemented: non-static data member initializers
 ..\src\Something.cpp:6:51: error: 'constexpr' needed for in-class initialization of static data member 'myArray' of non-integral type

Я действительно хорошо справлялся и изучал то, что не работать, но не так хорошо учиться тому, что работает.

Итак, как мне использовать списки инициализации {значение, значение, значение} для массива внутри класса?

Я уже какое-то время пытаюсь понять, как это сделать, и очень застрял. У меня есть несколько подобных списков, которые мне нужно составить для моего приложения.

7
задан Community 23 May 2017 в 10:30
поделиться