Я переучиваю 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 выдает ошибку на знаке равенства, говоря: «Ошибка: инициализация элемента данных теперь разрешена». Эта ошибка возникает всякий раз, когда я пытаюсь инициализировать переменные в то же время, когда они объявлены в закрытом разделе класса.
Любая помощь или совет будут оценены, спасибо заранее.
Массивы могут быть инициализированы только с использованием этого синтаксиса, но не назначены. Вы должны инициализировать его в списке инициализации конструктора:
Class() : array{"Hello", "World"} {}
В качестве альтернативы используйте std::array
который может быть назначен.
std::array<string, 2> array;
Class()
{
array = {{ "Hello", "World" }};
}
Другая:
Class()
{
array[0] = "Hello";
array[1] = "World";
}
Других решений пока нет …