Ошибка массива C ++ в Visual Studio

Я переучиваю C ++, и у меня возникают проблемы с массивами в классах. Вот упрощенная версия того, с чем я работаю

class Class
{
private:
string array[2];
public:
Class()
{
array[2] = {"Hello", "World"};
}
void printOut(int x)
{
cout << array[x];
}

Visual Studio имеет ошибку на первой фигурной скобке в инициализации массива в конструкторе (т.е. {«Привет, мир»}; который говорит: «Ошибка: ожидалось выражение». Однако эта проблема не возникает, когда я инициализирую любую другую переменную (не массивы).

Я бы просто инициализировал значения массива, когда я объявил массив в закрытом разделе класса, как показано ниже.

class Class
{
private:
string array[2] = {"Hello", "World"};

Но Visual Studio выдает ошибку на знаке равенства, говоря: «Ошибка: инициализация элемента данных теперь разрешена». Эта ошибка возникает всякий раз, когда я пытаюсь инициализировать переменные в то же время, когда они объявлены в закрытом разделе класса.

Любая помощь или совет будут оценены, спасибо заранее.

0

Решение

Массивы могут быть инициализированы только с использованием этого синтаксиса, но не назначены. Вы должны инициализировать его в списке инициализации конструктора:

Class() : array{"Hello", "World"} {}

В качестве альтернативы используйте std::array который может быть назначен.

std::array<string, 2> array;

Class()
{
array = {{ "Hello", "World" }};
}

Другая:

Class()
{
array[0] = "Hello";
array[1] = "World";
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]