Я работаю над назначением для создания класса контейнера для динамического массива строк. Я знаю, что было бы намного проще/лучше сделать с std :: vector, но дело не в этом. У меня возникла проблема с поиском правильного способа инициализации моего массива в конструкторе. Как это ниже, я все еще предупреждаю компилятор о том, что переменная lineArray не используется. Программа компилируется с предупреждением о том, что lineArray не используется, а затем зависает во время выполнения.Инициализация динамического массива строк (C++)
MyBag::MyBag()
{
nLines = 0;
std::string lineArray = new std::string[0]();
}
void MyBag::ResizeArray(int newLength)
{
std::string *newArray = new std::string[newLength];
//create new array with new length
for (int nIndex=0; nIndex < nLines; nIndex++)
{
newArray[nIndex] = lineArray[nIndex];
//copy the old array into the new array
}
delete[] lineArray; //delete the old array
lineArray = newArray; //point the old array to the new array
nLines = newLength; //set new array size
}
void MyBag::add(std::string line)
{
ResizeArray(nLines+1); //add one to the array size
lineArray[nLines] = line; //add the new line to the now extended array
nLines++;
}
Остерегайтесь: ваша функция 'add' является ошибкой. После изменения количества строк уже было увеличено на ':: Resize', больше не нужно' nLines ++'. – 6502
Я не знаю, является ли ваша «сумка» просто учебной вещью или чем-то, но с использованием std :: vector bag; было бы намного проще –
paulm