Я только что наткнулся на эту ошибку в каком-то устаревшем коде:
class MyAPIHandler
{
private:
int handle;
public:
void MyApiHandler() // default constructor
{
handle = 42;
};
};
Он компилируется нормально, без предупреждений, - но поведение было не тем, что я хотел, потому что имя конструктора - ошибка. Это само по себе привело бы к предупреждению о том, что «функция не возвращает значение», но я думаю, что я был на автопилоте и добавил тип возврата «void», чтобы «исправить» это.
Теперь исправление было простым, но мой вопрос таков: -
Какие приемы можно использовать для предотвращения повторения подобных ошибок?
В некоторых языках требуется явное ключевое слово «конструктор», что должно сделать эту проблему очевидной. Модульное тестирование, очевидно, также должно было его поймать. Что еще я могу сделать?