Pregunta

estoy teniendo problemas con el removeItem método porque se produce un error justo después de llamarlo.En este método, estoy intentando configurar el miembro de la matriz con el sku en el argumento de nullptr y "eliminarlo".Creo que tiene algo que ver con la ecualización: if(sku == shoppingList[i]->getSKU()).O tal vez algo que ver con const.La matriz tiene punteros a objetos de tipo. Product.

Esto pertenece a 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;
        }
    }
}

Esto pertenece al Producto.h

private:
std::string sku;

esto pertenece a Product.cpp

const string & Product::getSKU() const
{
    return sku;
}
¿Fue útil?

Solución

Cambie el método de la siguiente manera

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;
        }
    }
}

Creo que el problema es que intentaste llamar a un método para un puntero al Producto que ya estaba configurado en nullptr.

Otros consejos

Mi mejor suposición es que su código no está escrito para manejar entradas nullptr en su matriz.Dado que en realidad no muestra dónde ocurre el error o el tipo de lista de compras, es difícil decir exactamente qué está fallando.Establecer un std::string* a nullptr no lo eliminará de una matriz de tipo std::string*.Si está interesado en eliminar elementos fácilmente, considere una estructura de datos diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top