Impostazione delle stringhe const uguali nel metodo C ++?
-
21-12-2019 - |
Domanda
Sto avendo problemi con il metodo removeItem
perché si verifica un errore dopo che si chiama.
In questo metodo sto cercando di impostare il membro dell'array con sku
nell'argomento in nullptr
e "Rimuovi".
Penso che abbia qualcosa a che fare con la perequazione: if(sku == shoppingList[i]->getSKU())
.O forse qualcosa a che fare con const
.L'array ha puntatori per oggetti di tipo Product
.
Questo appartiene a Customert Worker.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;
}
}
}
.
Questo appartiene a Product.h
private:
std::string sku;
.
Questo appartiene al prodotto.cpp
const string & Product::getSKU() const
{
return sku;
}
. Soluzione
Modificare il metodo il seguente modo
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;
}
}
}
.
Penso che il problema sia che hai provato a chiamare un metodo per un puntatore al prodotto che era già impostato su NULLPRR
Altri suggerimenti
La mia migliore ipotesi è che il tuo codice non è scritto per gestire le voci di NullPTR nel tuo array.Dal momento che non viene effettivamente mostrato dove si verifica l'errore o il tipo di lista della spesa, è difficile dire esattamente cosa sta andando male.Impostazione di un std::string*
a NULLPTR non lo rimuoverà da una matrice di tipo std::string*
.Se sei interessato a una facile rimozione di articoli, considera una struttura di dati diverse.