Мне нужно сделать класс Expr с открытым интерфейсом, например:
class Expr{
//...
public:
Expr(const char*);
int eval(); //Evaluates the expression and gives the result
void print();
};
В дизайне, если пользователь вводит недопустимую строку, создается объект Expr типа "123 ++233+23/45", было бы правильно создать объект изначально и уведомить об ошибке, когда eval() вызывается для этого объекта.
Либо ошибка должна быть проверена в этот момент и брошено исключение, хотя это приведет к серьезному увеличению времени выполнения. И пользователь может написать код дальше, предполагая, что объект создан и обнаружит ошибку только во время выполнения..
Такие проблемы всегда возникают при создании класса, есть ли достаточно стандартный способ обработки таких ошибок, сделанных пользователем? ???