Учитывая следующее простое объявление функции:Возврат на значение - значение индикации ошибки
vector<Date> getMonthArray(int month, int year);
Что касается C++ 11, я могу воспользоваться MOVE семантике и вернуть даты вектор по значению без потери производительности и избежать используя «новый» и «удалить».
Проблема в том, что я не знаю, что вернуть, если функция не работает. E.G. месяц или год ниже нуля
Я не могу вернуть нуль, как я мог бы сделать с указателем, Так что я подумал о возможности: два
1) возвращает пустой массив 2) бросить исключение
Если честно, я ненавижу оба. хотел бы услышать несколько лучших решений от более опытных программистов на С ++.
EDIT:
Так, выбрасывая исключение действительно выглядит наиболее элегантное решение, поскольку оно не связано с какой-либо документации, что пользователю необходимо прочитать для того, чтобы запустить функцию должным образом (за исключением исключением того, что может быть брошенной). Я прав? или любые другие альтернативы?
Выброс исключений - вот путь. – rightfold
@ rightfold: нужно разработать? Как вы могли бы знать, что такое «правильное» решение для ОП в этом случае? Обработка исключений может быть сложным зверьком, а затем есть всевозможные вопросы о том, где можно проверить исключения и как именно они должны обрабатываться. Возможно, самое лучшее для кода OPs - проверить входные данные перед вызовом getMonthArray, потому что они могут, а затем есть другие функции, которые полагаются на этот проверенный ввод. Я хочу сказать, что, не зная базы данных OPs, говоря «Использовать исключения», нужно много соли. – AndyG