Объявление массива внутри класса и установка его размера с помощью конструктора
Я не работал с C ++ некоторое время, но я только начал проект с ним. Это может быть невозможно, но я пытаюсь создать шаблонный класс с массивом, который устанавливает его размер равным значению константы, которую я пытаюсь установить с помощью конструктора.
Это код конструктора:
Tarray(int s): start_size(s){
}
Это код, который устанавливает размер массива:
const int start_size;
T this_array[start_size];
Это весь файл:
#ifndef TARRAY_H_
#define TARRAY_H_
template<typename T>
class Tarray {
private:
const int start_size;
T this_array[start_size];
int array_size;
public:
Tarray(int s): start_size(s){
}
~Tarray(){
delete[] this_array;
}
T & operator[](int i){
return this_array[i];
}
};
#endif /* TARRAY_H_ */
Вот ошибки, которые я получаю:
..\/template_array/Tarray.h:16:24: error: 'Tarray<T>::start_size' cannot appear in a constant-expression
..\/template_array/Tarray.h:16:34: error: 'new' cannot appear in a constant-expression
..\/template_array/Tarray.h:16:34: error: ISO C++ forbids initialization of member 'this_array' [-fpermissive]
..\/template_array/Tarray.h:16:34: error: making 'this_array' static [-fpermissive]
..\/template_array/Tarray.h: In instantiation of 'Tarray<Person>':
..\Human.cpp:17:24: instantiated from here
..\/template_array/Tarray.h:16:34: error: invalid in-class initialization of static data member of non-integral type 'Person*'
Build error occurred, build is stopped
Time consumed: 343 ms.
Сообщения об ошибках меняются, когда я пытаюсь настроить код, но это ошибки этой конкретной сборки.
Спасибо за любую помощь