Давайте исправим тот, который вы пытались сделать. Это иллюстрирует многие ваши недоразумения.
Так что подумайте, что требуется.
Мы должны создать массив с заданной емкостью, что означает выделение заданного числа элементов и присваивая их указателю mArray
Мы должны установить емкость массива равной заданному значению.
После создания размер массивов будет равен нулю, поэтому мы должны установить размер равным нулю.
Собирая все вместе, получаем
DynArray(unsigned int _startingCap = 0)
{
// allocate memory for the given capacity
mArray = new Type[_startingCap];
// set the array capacity to the given value
mCapacity = _startingCap;
// set the size to zero
mSize = 0;
}
Я не знаю, куда начните с вашего кода. Вы явно откуда-то скопировали какой-то строковый код и пытались адаптировать его к новой ситуации. Но этот код не имеет ничего общего со строками, и даже если забыть о разнице между строками и массивами, код, который вы скопировали, делал что-то совершенно другое.
Понимаете ли вы концепции размера и емкости, и разницу между их? Код, который вы написали выше, предполагает, что это не так. Вам действительно нужно будет понять эту концепцию, прежде чем go продолжить.
Размер массива - это количество допустимых элементов в массиве. Достаточно просто.
Емкость массива - это то, сколько памяти он выделил. Массив может иметь большую емкость, чем его размер (но, очевидно, не может быть меньше). Дополнительная емкость позволяет массиву расти (т. Е. Увеличивать его размер) без необходимости перераспределять память, содержащую элементы массива.