Один из них заключается в использовании исключений С++: try catch blocks. Но освобождение динамической памяти будет проблемой при возникновении исключения.
Во-вторых, нужно использовать стиль C: переменная errno
Третий - это просто вернуть -1 при ошибке и 0 при успешном выполнении:)
Какой путь следует выбрать для проекта среднего размера и почему? Любой другой лучший подход..?