私はexprが、このような公共インタフェース持つクラスにする必要がありますでしょう、ユーザーは「++ 233 123 + 45分の23」のようなExprにオブジェクトを構築するために無効な文字列を入力した場合、設計では構文的には有効ですが、論理的に無効な引数をコンストラクタに渡して処理する方法はありますか?
class Expr{
//...
public:
Expr(const char*);
int eval(); //Evaluates the expression and gives the result
void print();
};
を最初にオブジェクトを構築し、そのオブジェクトに対してeval()が呼び出されたときにエラーを通知するのが正しいでしょう。
または、その時点でエラーをチェックして例外をスローする必要がありますが、実行時に重大な問題が発生します。そして、ユーザーはObjectが作成されたという前提でコードを書くかもしれません。実行時にエラーを発見するだけです..
このような問題は常にクラスを作成する際に発生します。 ????
コンストラクタで直接式を評価しますか? – ApprenticeHacker
[こちら](http://stackoverflow.com/questions/1158410/how-to-handle-incorrect-values-in-a-constructor)を参照してください。また、あなたのコンストラクタを '明示的に 'マークすることを検討してください。 –
また、その目的のために静的関数として他の効率的なコードを使用していますが、どちらも意味します。 – bhuwansahni