обработка ошибок — установка константных строк равных в методе c ++?

У меня проблемы с removeItem метод, потому что ошибка происходит сразу после его вызова.
В этом методе я пытаюсь установить член массива с sku в аргументе nullptr и «удалить» это.
Я думаю, что это как-то связано с уравнением: if(sku == shoppingList[i]->getSKU()), Или, может быть, что-то делать с const, Массив имеет указатели на объекты типа Product,

Это принадлежит CustomerOrder.cpp

CustomerOrder::CustomerOrder()
: shoppingList()
{

}
void CustomerOrder::removeItem(const string &sku)
{
for(int i =0; i< 20; i++)
{
if(sku == shoppingList[i]->getSKU())
{
shoppingList[i] = nullptr;
}
}
}

Это принадлежит в Product.h

private:
std::string sku;

это принадлежит Product.cpp

const string & Product::getSKU() const
{
return sku;
}

0

Решение

Измените метод следующим образом

void CustomerOrder::removeItem( const string &sku )
{
for( int i = 0; i < shoppingList.size(); i++ )
{
if( shoppingList[i] && sku == shoppingList[i]->getSKU() )
{
delete shoppingList[i];
shoppingList[i] = nullptr;
}
}
}

Я думаю, что проблема в том, что вы пытались вызвать метод для указателя на Product, который уже был установлен в nullptr

0

Другие решения

Я думаю, что ваш код не написан для обработки записей nullptr в вашем массиве. Поскольку вы на самом деле не показываете, где произошла ошибка или тип списка покупок, трудно точно сказать, что происходит не так. Настройка std::string* к nullptr не удалит его из массива типа std::string*, Если вы заинтересованы в простом удалении элементов, рассмотрите другую структуру данных.

0

По вопросам рекламы [email protected]