Как обрабатывать синтаксически правильный, но логически неверный аргумент, переданный конструктору?

Мне нужно сделать класс Expr с открытым интерфейсом, например:

class Expr{
    //...
public:
   Expr(const char*);
   int eval();           //Evaluates the expression and gives the result
   void print();
};

В дизайне, если пользователь вводит недопустимую строку, создается объект Expr типа "123 ++233+23/45", было бы правильно создать объект изначально и уведомить об ошибке, когда eval() вызывается для этого объекта.

Либо ошибка должна быть проверена в этот момент и брошено исключение, хотя это приведет к серьезному увеличению времени выполнения. И пользователь может написать код дальше, предполагая, что объект создан и обнаружит ошибку только во время выполнения..

Такие проблемы всегда возникают при создании класса, есть ли достаточно стандартный способ обработки таких ошибок, сделанных пользователем? ???

5
задан bhuwansahni 14 March 2012 в 08:49
поделиться