如何在变量中存储基本算术运算符?
我想在c ++中做这样的事情:
int a = 1;
int b = 2;
operator op = +;
int c = a op b;
if (c == 3) // do something
由于我只考虑+
,-
,*
和/
,我可以将运算符存储在string
中,只需使用switch语句。但是我想知道是否有更好/更简单的方法。
答案 0 :(得分:10)
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::plus<>
替换为std::minus<>
,std::multiplies<>
,std::divides<>
等。所有这些都位于标题functional
中,因此请务必事先#include <functional>
。
如果您没有使用最近的编译器,请将std::function<>
替换为boost::function<>
。