基本的な算術演算子を変数に格納するにはどうすればよいですか?
C ++で次のようなことをしたいと思います:
int a = 1;
int b = 2;
operator op = +;
int c = a op b;
if (c == 3) // do something
,のみ+
を検討しているので、演算子を a に格納して、switch ステートメントを使用するだけで済みます。ただし、より良い/簡単な方法があるかどうか疑問に思っています。-
*
/
string
基本的な算術演算子を変数に格納するにはどうすればよいですか?
C ++で次のようなことをしたいと思います:
int a = 1;
int b = 2;
operator op = +;
int c = a op b;
if (c == 3) // do something
,のみ+
を検討しているので、演算子を a に格納して、switch ステートメントを使用するだけで済みます。ただし、より良い/簡単な方法があるかどうか疑問に思っています。-
*
/
string
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<>