Я нуб, который только начинает программировать, и мне было интересно, почему я получаю сообщение об ошибке, которое говорит: недопустимое использование элемента не статических данных ‘Lavirint :: n’?
class Lavirint{
private:
int n, m;
bool mapa[n + 2][m + 2]; //is this valid?
...
}
Изменить — я добавил несколько других переменных в той же строке, но они не вызывают больше ошибок.
Нет, это недействительно. Вы не можете использовать переменную-член в месте, где нет конкретного объекта, но также вы не можете использовать любое значение, неизвестное во время компиляции, для определения размера массива C внутри класса.
Фактическое сообщение об ошибке, которое вы цитировали, относится к этой первой (и более трудной для понимания) проблеме. Ваши переменные-члены имеют значения только в контексте определенного объекта, но структура класса является чем-то общим для всех объектов и определяется до того, как будет создан какой-либо объект.
Вторая проблема является более фундаментальной, но первая проблема, очевидно, остановила форму компилятора, заметив вторую.