2012-05-03 24 views
5

Làm cách nào để lưu trữ toán tử số học cơ bản trong một biến?Lưu trữ toán tử số học cơ bản trong các biến

Tôi muốn làm điều gì đó như thế này trong C++:

int a = 1; 
int b = 2; 
operator op = +; 
int c = a op b; 
if (c == 3) // do something 

Kể từ khi tôi đang xem xét chỉ +, -, */ tôi có thể lưu trữ các nhà điều hành trong một string và chỉ sử dụng một bộ chuyển mạch tuyên bố. Tuy nhiên tôi đang tự hỏi nếu có một cách tốt hơn/dễ dàng hơn.

+4

Tìm hiểu cách các hàm STL nhận các biến vị ngữ. Bạn có thể sử dụng những thứ như 'std :: plus'. – chris

+3

Có phải 'enum' là một tùy chọn không? Điều gì đặc biệt sai với các chuỗi / – sarnold

Trả lời

9
int a = 1; 
int b = 2; 
std::function<int(int, int)> op = std::plus<int>(); 
int c = op(a, b); 
if (c == 3) // do something 

Thay std::plus<> với std::minus<>, std::multiplies<>, std::divides<>, vv, như cần thiết. Tất cả những điều này đều nằm trong tiêu đề functional, vì vậy hãy đảm bảo trước #include <functional>.

Thay thế std::function<> bằng boost::function<> nếu bạn không sử dụng trình biên dịch gần đây.

Các vấn đề liên quan