2012-05-03 20 views
5

Temel bir aritmetik işlecini bir değişkende nasıl saklayabilirim?Değişkenlerde temel aritmetik işleçlerinin saklanması

Ben ++ c böyle bir şey yapmak istiyorum:

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

Sadece +, -, * ve / düşünüyorum beri bir string operatöre saklamak için sadece bir anahtar kullanabilirsiniz Beyan. Ancak daha iyi/daha kolay bir yol olup olmadığını merak ediyorum. , gerektiği şekilde

+4

STL işlevlerinin nasıl yükleneceğine bakın. Std :: plus' gibi şeyler kullanabilirsiniz. – chris

+3

"enum" bir seçenek mi? Özellikle dizelerle ilgili yanlış olan / – sarnold

cevap

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 

vb std::minus<> ile std::plus<>, std::multiplies<>, std::divides<>, değiştirin. Bunların tümü functional numaralı başlıkta yer almaktadır, bu yüzden önceden #include <functional> olduğundan emin olun.

Güncel bir derleyici kullanmıyorsanız boost::function<> ile std::function<>'u değiştirin.