2014-12-13 4 views
1

Это мой код:Ошибка в размере массива

Отмеченная линия указывает ошибку.

class Student{ 
public: 
    //Student(string x, int y, string z[]); 
    void getinfo(); 
    void printinfo(); 

private: 
    string name; 
    int numClasses; 
    string arr[numClasses]; // the error is here it's not allowing me to put numClasses as the size of 
          // the class 
}; 
+0

Не могли бы вы прочитать http://stackoverflow.com/help/how-to-ask и указать, каковы ваши намерения с этим фрагментом кода. – KillaBytes

+0

У меня возникла ошибка: им не разрешено помещать переменную в качестве моего размера массива –

+0

int numClasses; string arr [numClasses]; –

ответ

2

Размер массива должен быть постоянным интегральное выражение

Вы можете сделать что-то вроде этого:

class Student 
{ 
public: 
    void getinfo(); 
    void printinfo(); 

private: 
    string name; 
    static const int numClasses = 20; 
    string arr[numClasses]; 
}; 
0

Поскольку массив будет выделена во время компиляции, и поэтому, когда размер не является константой, компилятор не может точно определить его значение и выдает ошибку.

Если вы хотите использовать массив с динамическим размером, используйте вектор.

Здесь 1) Изменить размер на константные 2) или, используйте вектор ->vector<string>arr;

0

Массив должен быть постоянным здесь какое-то объяснение, что может помочь, что я нашел в сайте CPP

Поле элементов внутри скобок [], которое представляет число элементов , которые будет удерживать массив, должно быть постоянным значением, так как массивы представляют собой блоки нединамической памяти, размер которых должен быть определен перед выполнением. Для того, чтобы создать массивы с переменной длиной динамической памятью требуется

, так как вы получили свой ответ уже я просто хочу, чтобы включать большую информацию о массивах, что другие могли бы извлечь выгоду.

в C++ правильно объявить массив из 10 целых чисел, например, может быть сделано таким образом

int array[10]; 

, если вы знаете, голова времени, какие значения вы хотите в массиве вы можете просто сделать это таким образом

int numbers [] = {13, 30, 50, 2, 5, 6, 70, 8, 9, 10}; 

«арифметика указателей» & регулярного арифметического Указатель арифметик способ выражения оценок, которые он использует 2 стека один для символов и один для чисел для примера арифметики указателей использует * (а + 1)», где, как регулярные арифметика использует «а [я]» оба те же один из моих профессоров много говорил о массивах

and say array[i] = *(a+i) 
    what does that mean? 
    it basically means 
    if a[i] = a[0] 
    then in pointer arithmetic it is : 
    *(a+0); 
    and if a[i] = a[1] 
    then in pointer arithmetic it is : 
    *(a+1); and so on 

в основном я делил около 2 недель моей структуры данных курса: P надеюсь, что я был в состоянии помочь

+0

На самом деле это неправда, если ур не использует очень старый компилятор. –

+0

Никто не будет на самом деле делать * (a + i) cuz в конце его от «C», но это «как нас учили о массивах и указателях арифметика. http://www.learncpp.com/cpp-tutorial/68-pointers-arrays-and-pointer-arithmetic/ – CaVeMaN

Смежные вопросы