mam problem że kiedy używać coś takiego:Jak wrócić „nie znaleziono”, gdy wartość zwracana jest const odniesienia
const MyList& my_list = getListForThisRegion(/*region ID, ...*/);
Nie wiem co wrócić, gdy wartość nie zostanie znaleziona.
Mój problem polega na tym, że chciałbym mieć sposób, aby zasygnalizować (podczas zwracania wartości z getListForThisRegion
) "wartość nie znaleziono" dla osoby dzwoniącej. Jeśli zwróciłem wskaźnik, mógłbym zwrócić nullptr
, ale nie wiem jak to zrobić z referencjami. Wszystko, co mogę wymyślić, to posiadanie statycznego elementu not_found
typu MyList
i zwrócenie do niego odwołania, ale wydaje się to brzydkie.
I tak, nie mogę zwrócić wartości, ponieważ listy są "grube" i często używane.
EDYCJA: tona wspaniałych odpowiedzi, ale wyjątek nie jest dopuszczalnym rozwiązaniem, ponieważ liczba razy byłaby podnoszona jest wysoka (odsetek: nbNotFound/nbCalls
jest wysoki).
EDIT2: odnośnie doładowania :: opcjonalnie - jak skomplikowane jest opanowanie? Chodzi mi o to, że wymaga ona nieoczywistej wiedzy (nieoczywistość = coś, co nie jest po prostu znajomością składni)?
Wyrzucanie wyjątku może być dobrym rozwiązaniem. – BigMike
możesz również chcieć spojrzeć na 'boost :: optional' – Akanksh
Odwołanie musi odnosić się do obiektu, więc możesz rzucić wyjątek lub nie używać odwołania. 'boost :: optional' to świetny wybór, ale może to być przesada; po prostu użyj wskaźnika. – GManNickG