2012-05-03 8 views
5

基本的な算術演算子を変数に格納するにはどうすればよいですか?基本的な算術演算子を変数に格納する

私はC++でこのような何かをしたいと思います:

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

を私は+-*/を検討しているので、私はstringにオペレータを格納し、ちょうどスイッチを使用することができますステートメント。しかし、より良い/より簡単な方法があるのだろうかと思っています。

+4

STL関数がどのように述語を取るかを見てください。あなたは 'std :: plus'のようなものを使うことができます。 – chris

+3

'enum'はオプションですか?具体的に何が文字列/ – sarnold

答えて

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 

必要になるとして、などstd::minus<>std::plus<>std::multiplies<>std::divides<>を、交換してください。これらはすべてヘッダfunctionalにありますので、あらかじめ#include <functional>にしてください。

最新のコンパイラを使用していない場合はstd::function<>boost::function<>に置き換えてください。

関連する問題