如何将函数作为参数传递给C ++中的另一个函数?

时间:2013-11-21 07:09:09

标签: c++

我的编译器出现以下错误。请帮我解释一下语法。

int sum(int a, int b);
int sum(int a, int b) {
    return a+b;
}

int mult(int c, std::function<int(int a, int b)> sum2);
int mult(int c, std::function<int(int a, int b)> sum2) {
    return sum2 * c;
}

int main() {
    cout << mult(5, sum(2, 2));
    return 0;
}

4 个答案:

答案 0 :(得分:1)

你使用它时出错了,你不应该在调用sum调用 mult函数,而是在 > mult

int mult(int c, std::function<int(int a, int b)> sum2) {
    return sum2(2, 2) * c;
}

int main() {
    cout << mult(5, sum);
    return 0;
}

您现在正在做的是在sum中传递main调用的结果,结果是整数而不是函数。

答案 1 :(得分:0)

您没有将该函数作为参数传递。您正在传递函数的返回值。将mult的第二个参数更改为int。

答案 2 :(得分:0)

您实际上是将值4传递给函数mult。你应该这样做:

mult (5, sum);

答案 3 :(得分:0)

错误太多了:

  1. 缺少#include <iostream>#include <functional>
  2. cout应为std::cout
  3. 将函数与int相乘毫无意义,因为未定义此类运算符*。试试这个例子:

    int mult(int c, std::function<int(int a, int b)> sum2) {
        return sum2(2,2) * c;
    }
    int main() {
        std::cout << mult(5, sum);
    }