2012-05-03 6 views
5

¿Cómo puedo almacenar un operador aritmético básico en una variable?Almacenamiento de operadores aritméticos básicos en las variables

me gustaría hacer algo como esto en C++:

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

Desde que estoy considerando sólo +, -, * y / que podía almacenar el operador en un string y sólo tiene que utilizar un interruptor declaración. Sin embargo, me pregunto si hay una manera mejor/más fácil.

+4

Mire cómo las funciones STL toman predicados. Puede usar cosas como 'std :: plus'. – chris

+3

¿'enum' es una opción? ¿Qué es específicamente lo que está mal con las cuerdas / – sarnold

Respuesta

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 

Reemplazar std::plus<> con std::minus<>, std::multiplies<>, std::divides<>, etc., tal como se da el caso. Todos estos se encuentran en el encabezado functional, así que asegúrese de #include <functional> de antemano.

Reemplace std::function<> con boost::function<> si no está utilizando un compilador reciente.

Cuestiones relacionadas