2012-05-03 2 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<>으로 바꿉니다.

관련 문제