gpt4 book ai didi

c++ - 函数的功能无法识别输入参数

转载 作者:行者123 更新时间:2023-11-28 01:30:37 25 4
gpt4 key购买 nike

我正在尝试使用指向函数的指针创建函数的函数,类似于 this link 底部(最后一节)给出的内容在 www.cplusplus.com 上,除了更高级一点。我正在尝试以下操作:

在 myFile.h 中

// 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)
}

我检查了错误E0020这把我带到了 Stack Overflow,那个用户缺少了一个支撑。我检查了一下,我没有遗漏大括号(但即使检查了几次,我也可能是错的)。

是我错误地实现了 f(x, g(y)) 的想法,还是我实际上缺少大括号?

最佳答案

错误出现在这里是因为编译不知道什么是“y”,因为它没有在函数调用的可见范围内的任何地方声明。'f_xANDg_y(双 x,双(* g)(双 y);'上面的函数参数只需要两个参数,

  1. "x"- '是 double 类型'
  2. “g”作为指向“double(*)(double)”类型函数的指针。这是 'double (*g) (double y)' 这里 'y' 是函数指针的一部分,如果不使用 y,您的代码将完美地编写函数。
  3. 在这里,您尝试使用“y”作为输入参数调用您的函数,但编译器无法在其范围内找到“double y”,因此会抛出错误。
  4. 由于函数 TwoDimensional 中的整个“double(*g)(double y)”参数归结为“一个以 double 作为输入并返回 double 的函数指针”

        double Functions::TwoDimensional::f_xANDg_y(double x, double(*g)(double y)) {
    return (x + (*g)(y)); // <== This is where I get the Error (E0020)
    }
  5. 您的代码工作正常,您需要再添加一个“double”作为函数的参数,如下所示 TwoDimensional::f_xANDg_y(double x, double(*g)(double),双 y)。正如编译器所期望的那样。

  6. 修改后的代码:

'

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

'

关于c++ - 函数的功能无法识别输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com