는 :함수에 매개 변수로 연산자를 보낼 수 있습니까? 전 C에서 쓸 수 있습니다 예를 들어
int sum(int a, int b);
void print(int a, int b, int (*f)(int, int));
문제는 내가 연산자를 보낼 수 있습니까?
print(12, 13, sum);
// print(12, 13, operator +); compilation error
는 :함수에 매개 변수로 연산자를 보낼 수 있습니까? 전 C에서 쓸 수 있습니다 예를 들어
int sum(int a, int b);
void print(int a, int b, int (*f)(int, int));
문제는 내가 연산자를 보낼 수 있습니까?
print(12, 13, sum);
// print(12, 13, operator +); compilation error
불행히도, 그건 불가능합니다. functional
헤더의 C++ 표준 라이브러리의 일부 일반 연산자에 대한 래퍼가 있습니다. std::plus<T>
. print
함수에 plus<int>
이 아닌 특정 함수 매개 변수가 필요하기 때문에 코드에서 작동하지 않습니다.
template <typename BinaryFunction>
void print(int a, int b, BinaryFunction f);
print(12, 13, std::plus<int>());
함수 서명에서 BinaryFunction 전에 int를 제거해야합니다. – UncleBens
네, 일반적으로 가능하지만, 더 int operator+(int, int)
가 없습니다 대신 그
훨씬 더 잘 작동 템플릿 인수를 전달하려고합니다. int+int
은 기본 제공 식입니다. std::string::operator+
다음을 참조하십시오 : http://stackoverflow.com/questions/992320/can-operators-be-used-as-functions-c/ –