我的编译器出现以下错误。请帮我解释一下语法。
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;
}
答案 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)
错误太多了:
#include <iostream>
和#include <functional>
cout
应为std::cout
将函数与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);
}