C++ 函数的函数不能识别输入参数
我试图使用指向函数的指针来创建函数的函数,类似于www.cplusplus.com上的底部(最后一节)给出的,只是稍微高级了一点。我正在尝试以下方法: 在myFile.h中C++ 函数的函数不能识别输入参数,c++,function-pointers,C++,Function Pointers,我试图使用指向函数的指针来创建函数的函数,类似于www.cplusplus.com上的底部(最后一节)给出的,只是稍微高级了一点。我正在尝试以下方法: 在myFile.h中 // namespace for: Functions namespace Functions { // namespace for: 1D functions namespace OneDimensional { // Function for: f(x) = x * x, Note:
// namespace for: Functions
namespace Functions {
// namespace for: 1D functions
namespace OneDimensional {
// Function for: f(x) = x * x, Note: read t as times
double xtx(double x);
}
// namespace for: 2D functions
namespace TwoDimensional {
// Function for: f(x, g(y)) = x + g(y), Note: read _ as "of"
double f_xANDg_y(double x, double(*g)(double y));
}
}
在myFile.cpp中
double Functions::OneDimensional::xtx(double x) {
return (x * x);
}
double Functions::TwoDimensional::f_xANDg_y(double x, double(*g)(double y)) {
return (x + (*g)(y)); // <== This is where I get the Error (E0020)
}
双函数::一维::xtx(双x){
返回(x*x);
}
双函数::二维::f_xANDg_y(双x,双(*g)(双y)){
return(x+(*g)(y));//此处出现错误,因为编译器不知道什么是“y”,因为它在函数调用的可见范围内的任何位置都没有声明。
‘f_xANDg_y(双x,双(*g)(双y);’
上述功能参数仅取两个参数
“x”-“是双精度类型”
“g”作为指向类型为“double(*)(double)”的函数的指针。它是“double(*g)(double y)”。此处“y”是函数指针的一部分,您的代码可以完美地编写函数,而不必使用y
在这里,您试图使用“y”作为输入参数调用函数,而编译器无法在其作用域中找到“double y”,因此,它会抛出一个错误
由于函数中的整个“double(*g)(double y)”参数TwoDimensional归结为“以double作为输入并返回double的函数指针”
“此处出现错误,因为编译器不知道什么是“y”,因为它在函数调用的可见范围内的任何位置都没有声明。
‘f_xANDg_y(双x,双(*g)(双y);’
上述功能参数仅取两个参数
“x”-“是双精度类型”
“g”作为指向类型为“double(*)(double)”的函数的指针。它是“double(*g)(double y)”。此处“y”是函数指针的一部分,您的代码可以完美地编写函数,而不必使用y
在这里,您试图使用“y”作为输入参数调用函数,而编译器无法在其作用域中找到“double y”,因此,它会抛出一个错误
由于函数中的整个“double(*g)(double y)”参数TwoDimensional归结为“以double作为输入并返回double的函数指针”
“什么是y
?你想传递给g
的值是什么?你是想把y
作为一个额外的参数传递吗?很难说你想实现什么,但可能类似于double f_xANDg_y(double x,double y,double(*g)(double)){返回x+g(y)}”
我不明白这个练习的意义。@IgorTandetnik我的想法是传递g,它是指向某个函数(任何函数)的指针它本身有一个输入参数y。这就是我试图在myFile.cpp中实现的。您确实传递了该函数。现在您还需要传递一个值来调用该函数。@IgorTandetnik好的,我将按照您所说的方法尝试将3个输入参数传递到fxandy,谢谢您的帮助help@IgorTandetnik这就解决了问题错误,如果您想将其作为答案发布,您可以,无论哪种方式都要感谢。本练习的重点是,我需要这些函数来测试我正在编写的数值方法。什么是y
?您想传递给g
?您想传递y
作为额外参数吗?很难判断是什么至少,您正在尝试实现,但可能类似于double f_xANDg_y(double x,double y,double(*g)(double)){return x+g(y);}
我不明白这个练习的意义。@IgorTandetnik我的想法是传递g,它是指向某个函数(任何函数)的指针它本身有一个输入参数y。这就是我试图在myFile.cpp中实现的。您确实传递了该函数。现在您还需要传递一个值来调用该函数。@IgorTandetnik好的,我将按照您所说的方法尝试将3个输入参数传递到fxandy,谢谢您的帮助help@IgorTandetnik这就解决了问题错误,如果你想把它作为一个答案,你可以,无论哪种方式,谢谢。这个练习的重点是,我需要这些函数来测试我正在写的数值方法
double Functions::TwoDimensional::f_xANDg_y(double x, double(*g)(double y)) {
return (x + (*g)(y)); // <== This is where I get the Error (E0020)
}
namespace Functions {
// namespace for: 1D functions
namespace OneDimensional {
// Function for: f(x) = x * x, Note: read t as times
double xtx(double x);
}
// namespace for: 2D functions
namespace TwoDimensional {
// Function for: f(x, g(y)) = x + g(y),a Note: read _ as "of"
double f_xANDg_y(double x, double(*g)(double), double yParam);
}
}
double Functions::OneDimensional::xtx(double x) {
return (x * x);
}
double Functions::TwoDimensional::f_xANDg_y(double x, double(*g)(double), double y) {
return (x + g(y));
}