недопустимое использование нестатического члена данных С++ для студента

Я новичок, который только начинает программировать, и мне было интересно, почему я получаю сообщение об ошибке, в котором говорится: неправильное использование нестатического члена данных «Lavirint::n»?

class Lavirint{
private:
    int n, m;
    bool mapa[n + 2][m + 2]; //is this valid?
...
}

Изменить. Я добавил несколько других переменных в ту же строку, но они не вызывают больше ошибок.


person Nick Fulson    schedule 09.07.2015    source источник
comment
Каковы значения в n и m? Если вы хотите сделать это, объявите mapa как bool **mapa;, а затем выделите для него память в конструкторе.   -  person scohe001    schedule 09.07.2015


Ответы (1)


Нет. Это недействительно. Вы не можете использовать переменную-член в месте, где нет определенного объекта, но также вы не можете использовать какое-либо значение, неизвестное во время компиляции, для определения размера массива C внутри класса.

Фактическое сообщение об ошибке, которое вы цитируете, относится к этой первой (и более сложной для понимания) проблеме. Ваши переменные-члены имеют значения только в контексте определенного объекта, но структура класса является чем-то общим для всех объектов и определяется до создания любого объекта.

Вторая проблема более фундаментальна, но первая проблема, по-видимому, помешала компилятору заметить вторую.

person JSF    schedule 09.07.2015
comment
Большое спасибо за быстрый ответ. Вторую ошибку я исправил сразу, а как исправить первую? - person Nick Fulson; 09.07.2015