Я использую коды ошибок для обработки ошибок в моем проекте С++. Проблема заключается в том, как вернуть коды ошибок из функции, которая должна возвращать некоторую переменную/объект.
рассмотрим это:
long val = myobject.doSomething();
Здесь myobject является объектом некоторого класса. Если функция doSomething встречает некоторое условие ошибки, то как она должна уведомить вызывающего абонента (без использования исключений).
Возможные решения:
- Имейте член данных (скажем err_) в классе, который может быть проверен вызывающим. Но это было бы небезопасно в многопоточном приложении, использующем один и тот же объект и вызывающем ту же функцию.
- Используйте некоторую глобальную переменную ошибки, опять же такую же проблему в многопоточной среде.
Теперь, как я могу уведомить вызывающего абонента о некотором состоянии ошибки?