2013-11-21 192 views
1

我的编译器给出了以下错误。请帮助我的语法。如何将函数作为参数传递给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; 
} 
+3

你试图做太多。我怀疑你是否知道函数的基础知识。我建议你先阅读基础知识。 – Nawaz

+3

“我的编译器给出了以下错误”...这是代码... – parrowdice

回答

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; 
} 

你现在正在做的是通过调用mainsum的结果,并且结果是一个整数而不是函数。

+0

谢谢,我现在明白我的错误。 – pizzaEatingGuy

0

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

0

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

mult (5, sum); 
0

有这么多的错误:

  1. 失踪#include <iostream>#include <functional>
  2. cout应该std::cout
  3. 乘以仿函数与诠释是没有意义的,因为这样的运算符*未定义。尝试例如这样的:

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