Я пишу простой контейнерный класс на C++, похожий на карту, в которой хранятся объекты, проиндексированные по ключу. Я хотел бы предоставить функцию доступа, например:
V& getValue(const K &key);
где я возвращаю ссылку на значение.
Но я также хотел обработать случай, когда ключ/значение отсутствует, и иметь возможность вернуть некоторый статус пользователю (. Могут быть некоторые причины, по которым его нет, и я хочу связаться с вызывающим абонентом через некоторые Тип состояния ).
Я полагаю, что мог бы сделать следующее, но для вызова этого потребовалось бы создать объект V, прежде чем эта функция может быть вызвана, и я просто собираюсь скопировать внутренний объект V в тот, который передается по ссылке, так что это кажется плохим.
Status getValue(const K &key, V& v);
Я мог бы также сделать:
V &getValue(const K &key, Status &s);
Но по какой-то причине это кажется немного неуклюжим, так как фокус отвлекается от статуса, и пользователи могут забыть проверить его (, но, возможно, это не моя проблема ).
Так есть ли в любом случае функция, похожая на
Status getValue(const K &key, V& v);
без необходимости создания фиктивного объекта V перед его вызовом? Вы не можете передать ссылку на ссылку. Я полагаю, что мог бы использовать указатели, и я рад это сделать, но это менее желательно для создания простой в использовании и осмысленной функции.
есть идеи?