Функция с возвращаемым типом должна возвращать значение этого типа.
NewType operator[](size_t i) const { ptr->array_[i]; }
не имеет оператора return
.
Возможно, вы имели в виду
NewType operator[](size_t i) const { return ptr->array_[i]; }
?
Я не вижу ошибку номер 2
array_ = (NewType*) malloc(maxSize * sizeof(NewType));
но malloc
- это не то, что вы должны использовать в C ++, за исключением нескольких редких крайних случаев.Он выделяет память, но не вызывает конструкторы.Это делает MyArray<std::string>
бомбу замедленного действия.Предпочитают использовать new
.
Примечание:
void push_back(NewType item)
{
array_[size_] = item;
} // push_back method
Всегда будет подталкивать к одному и тому же месту.Вам нужно увеличить size_
.
Говоря о size_
, он никогда не инициализируется, поэтому у вас нет возможности узнать, куда array_[size_] = item;
попытается поместить item
.