Это не конструктор.Это T* list[]
, который определяет член list
как массив указателей на T
без указания размера массива.
Возможно, вы вместо этого захотите T* list;
.
Также обратите внимание, что в соответствии с правилом трех вашему классу, имеющему деструктора, также потребуется конструктор копирования и оператор присваивания .
Реализация оператора присваивания поверх деструктора и конструктора копирования с использованием Копирование и замена идиома .
Тогда синтаксис для вашего списка инициализации неправильный.Это
VectorRemake() : capacity(DEFAULT_CAPACITY), count(0) {list = new T[capacity];}
// ^
// comma, not colon
Наконец, в C ++ определение класса должно сопровождаться точкой с запятой , в противном случае вы получите странные ошибки в коде после определения вашего класса.
Причина этого в том, что определение класса может быть частью определения переменной:
class foo { ... } bar;
(Это определяет bar
как переменную типа foo
. Фактически, этодаже возможно использовать класс, который не имеет имени:
class { ... } foobar;
, хотя это редко делается.)
Компилятору нужна точка с запятой, чтобы узнать,
class x {}
y yaddayadda ...
- это определение y
как экземпляра x
или начало того, что yaddayadda
может быть.