Мне нравится функция в Python, которая может возвращать None, когда она не находит правильное возвращаемое значение. Например:
def get(self, key):
if key in self.db:
return self.db[key]
return None
Мне нужно реализовать ту же функцию в С++. Я думаю о некоторых возможностях.
Возвращает true/false, когда true получает значение из ссылки или указателя
bool get(string key, int& result)
{
if (in(key, db)) {
result = db[key];
return true;
}
return false;
}
Выслать сообщение об ошибке "Нет случая"
int get(string key) throw (int)
{
if (in(key, db)) {
result = db[key];
return result;
}
throw 0;
}
try {
....
}
catch (int n)
{
cout << "None";
}
Использовать пару
pair<bool, int> getp(int i)
{
if (...) {
return pair<bool, int>(true, 10);
}
return pair<bool,int>(false, 20);
}
pair<bool, int> res = getp(10);
if (res.first) {
cout << res.second;
}
Какой из них обычно используется в С++? Есть ли другие способы сделать это на С++?