2015-07-09 2 views
2

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

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

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

+2

Каковы значения в 'n' и' m'? Если вы хотите это сделать, объявите 'mapa' как' bool ** mapa; ', а затем выделите для него память в конструкторе. – scohe001

ответ

4

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

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

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

+0

Большое вам спасибо за быстрый ответ. Вторая ошибка, которую я исправил сразу, но как я могу исправить первый? –