2012-05-03 25 views
5

Jak zapisać podstawowy operator arytmetyczny w zmiennej?Przechowywanie podstawowych operatorów arytmetycznych w zmiennych

chciałbym zrobić coś takiego w C++:

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

Odkąd jestem rozważa tylko +, -, * i / mogę przechowywać operatora w string i wystarczy użyć przełącznika komunikat. Jednak zastanawiam się, czy istnieje lepszy/łatwiejszy sposób.

+4

Sprawdź, w jaki sposób funkcje STL pobierają predykaty. Możesz używać rzeczy takich jak 'std :: plus'. – chris

+3

Czy 'enum' jest opcją? Co konkretnie jest nie tak z ciągami / – sarnold

Odpowiedz

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 

Wymień std::plus<> z std::minus<>, std::multiplies<>, std::divides<>, etc., jak potrzeba. Wszystkie one znajdują się w nagłówku functional, więc wcześniej należy się upewnić, że jest to #include <functional>.

Wymień std::function<> na boost::function<>, jeśli nie używasz najnowszego kompilatora.