tôi cần phải thực hiện một lớp expr có giao diện công cộng như thế này:Làm thế nào để xử lý một đối số cú pháp hợp lệ nhưng hợp lệ không hợp lệ được truyền cho hàm tạo?
class Expr{
//...
public:
Expr(const char*);
int eval(); //Evaluates the expression and gives the result
void print();
};
Trong thiết kế, nếu người dùng nhập vào một chuỗi không hợp lệ để xây dựng một đối tượng expr như "123 ++ 233 + 23/45", sẽ nó được quyền xây dựng đối tượng ban đầu và thông báo lỗi khi eval() được gọi trên đối tượng đó.
Hoặc lỗi phải được kiểm tra tại điểm đó và bị loại trừ, mặc dù điều đó sẽ dẫn đến sự gia tăng nghiêm trọng về thời gian chạy. Và người dùng có thể viết mã furthur với giả định rằng đối tượng được tạo ra và sẽ phát hiện ra lỗi khi chạy chỉ ..
Các vấn đề như vậy nảy sinh trong việc tạo ra một lớp, có một cách khá chuẩn để xử lý các lỗi đó được thực hiện ở phần của người dùng ????
đánh giá biểu thức trực tiếp trong hàm tạo? – ApprenticeHacker
Xem [tại đây] (http://stackoverflow.com/questions/1158410/how-to-handle-incorrect-values-in-a-constructor). Ngoài ra, hãy xem xét đánh dấu hàm tạo của bạn 'tường minh'. –
Hoặc thay vì sử dụng một số mã hiệu quả khác như một chức năng tĩnh cho mục đích đó, tôi có nghĩa là một trong hai cách ... – bhuwansahni