Für Klasse, ich mache ein Programm, das ein Hotel verwaltet. Ich erhalte einen Laufzeitfehler, wenn mein Programm zu dieser Funktion kommt: Vektoriterator nicht dereferenzierbar. Ich habe den Debugger verwendet, um den Problembereich zu finden, aber ich kann nicht herausfinden, was damit nicht stimmt. Irgendwelche Vorschläge?Laufzeitfehler - Vector Iterator nicht dereferenzierbar?
Customer & ListOfCustomers::getByID(int id)
{
if(!sortedByID)sortByID();
vector<Customer>::iterator iter;
Customer cus;
cus.customerID=id;
iter = lower_bound(customers.begin(),customers.end(),cus,compareCustomersByID);
if( (*iter).customerID == id) // <---DEBUGGER SAYS ERROR HERE IN THIS LINE
{
return *iter;
}
else
{
return NullCustomer();
}
}
Hier ist die Funktion lower_bound. Es befindet sich in # include Algorithmus
template<class _FwdIt,
class _Ty,
class _Pr> inline
_FwdIt lower_bound(_FwdIt _First, _FwdIt _Last,
const _Ty& _Val, _Pr _Pred)
{// find first element not before _Val, using _Pred
// _DEBUG_ORDER_PRED(_First, _Last, _Pred);
return (_Rechecked(_First,
_Lower_bound(_Unchecked(_First), _Unchecked(_Last), _Val, _Pred,
_Dist_type(_First))));
}
EDIT: hat einen Raum, so dass die lower_bound Funktion korrekt als Code formatiert werden würde.
Vielleicht 'iter == customers.end()'? – quasiverse
@quasiverse Ich bekomme immer noch den gleichen Fehler, wenn ich versuche, das – Mike
Wie Quasicverse sagte, meine Vermutung ist, dass der Iter-Zeiger nicht korrekt ist. Außerdem wäre es sinnvoll, die Funktion lower_bound zu posten. – RStrad