2012-05-03 23 views
5

मैं एक चर में एक मूल अंकगणितीय ऑपरेटर कैसे स्टोर कर सकता हूं? जब से मैं केवल +, -, * और / पर विचार कर रहा हूँचर में मूल अंकगणितीय ऑपरेटरों को संग्रहीत करना

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

मैं एक string में ऑपरेटर संग्रहीत कर सकती है और सिर्फ एक स्विच का उपयोग करें:

मैं C++ कुछ इस तरह करना चाहते हैं बयान। हालांकि मैं सोच रहा हूं कि कोई बेहतर/आसान तरीका है या नहीं।

+4

एसटीएल कार्यों का अनुमान लगाने में कैसे देखें। आप 'std :: plus' जैसी चीजों का उपयोग कर सकते हैं। – chris

+3

'enum' एक विकल्प है? तारों के साथ विशेष रूप से गलत क्या है / – sarnold

उत्तर

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 

, std::minus<> साथ std::plus<>, std::multiplies<>, std::divides<>, आदि की जगह के रूप में हो सकता है आवश्यकता नहीं है। ये सभी शीर्षलेख functional में स्थित हैं, इसलिए पहले से #include <functional> सुनिश्चित करें।

std::function<>boost::function<> के साथ बदलें यदि आप हालिया कंपाइलर का उपयोग नहीं कर रहे हैं।