我需要具有公共接口這樣一類Expr的:如何處理傳遞給構造函數的語法有效但邏輯無效的參數?
class Expr{
//...
public:
Expr(const char*);
int eval(); //Evaluates the expression and gives the result
void print();
};
在設計中,如果用戶輸入了一個無效的字符串來構造Expr的對象,如「123 ++ 233 +45分之23」,將最初構造對象並在該對象上調用eval()時通知錯誤是正確的。
或者應該在該點檢查錯誤並引發異常,但這會導致運行時嚴重增加。並且用戶可以在假設對象被創建並且將僅在運行時發現錯誤的情況下編寫代碼。
這樣的問題始終出現在創建類中,是否存在一種相當標準的方式來處理在用戶部分????
直接在構造函數中評估表達式? – ApprenticeHacker 2012-03-14 08:51:15
請參閱[這裏](http://stackoverflow.com/questions/1158410/how-to-handle-incorrect-values-in-a-constructor)。另外,考慮標記你的構造函數'explicit'。 – 2012-03-14 08:51:17
或者寧願使用其他有效的代碼作爲靜態函數僅用於此目的,我的意思是任何一種方式...... – bhuwansahni 2012-03-14 08:52:58