witajcie, piszę listę dwukierunkową i mam problem bo nie wiem jak prawidłowo zorganizować zwracanie wartości w przypadku gdy lista jest pusta (wskaźniki w obie strony ustawione na 0 czyli lista::iterator dostaje wskaźnik o wartości 0). Próbowałem wymyślić coś takiego:
T& operator*()
{
try
{
if(val!=0)
return val->value;
else
throw string("WARNING: null pointer detected, list is empty");
}
catch(std::string error)
{
cout << error << endl;
return ... ? //co tu zwracać,
}
}
val jest wskaźnikiem typu element przechowującego wartości typu T oraz wskaźniki na następny i poprzedni element. zastanawiam się jak to prawidłowo powinno być rozwiązane. Czy może powinienem sprawdzać robiąc lista.begin() czy lista jest pusta i jeżeli jest to alokować nową wartość wstawiając ją do listy jako pierwszy element. Tylko to bez sensu bo nigdy nie wiem jaki ktoś dostarczy konstruktor, może nie będzie konstruktora() i wtedy się program posypie.