9

如何将基本算术运算符存储在变量中?

我想在 C++ 中做这样的事情:

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

由于我只考虑+, -,*并且/我可以将运算符存储在 a 中string并且只使用 switch 语句。但是我想知道是否有更好/更简单的方法。

4

1 回答 1

11
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<>等。所有这些都位于 headerfunctional中,因此请务必#include <functional>事先。

如果您没有使用最新的编译器,请替换std::function<>为。boost::function<>

于 2012-05-03T02:28:10.050 回答