Я знаю, что большинство людей считают это плохой практикой , но когда вы пытаетесь сделать общедоступный интерфейс своего класса работать только со ссылками, сохраняя указатели внутри и только при необходимости, я думаю, что нет никакого способа вернуть что-то, говорящее о том, что искомое значение не существует в контейнере.
class list {
public:
value &get(type key);
};
Давайте подумаем, что вы не хотите, чтобы в общедоступном интерфейсе класса были замечены опасные указатели. Как вы возвращаете в этом случае значение not found, выдавая исключение?
Как вы к этому подходите? Вы возвращаете пустое значение и проверяете его пустое состояние? Я на самом деле использую метод броска, но я ввел метод проверки:
class list {
public:
bool exists(type key);
value &get(type key);
};
Поэтому, когда я забываю сначала проверить, существует ли значение, я получаю исключение, которое действительно исключение .
Как бы вы это сделали?