typedef类型不匹配将其传递给函数

时间:2017-04-13 00:46:26

标签: c++ typedef

我有一个标题

typedef double func(double)

和名为

的标题中的函数声明
double function(func f);

这被定义为在相应的.C文件中执行某些操作。所以,要访问它,我有一个包含

的文件main.C.
#include"necessaryheader.h"

double f(double x){
  return 1.0;
}

int main(){
  func f;
  double x = function(f);
  std::cout << x << std::endl;
}

但是当我尝试编译它时会抛出错误

undefined reference to `function(double (*)(double))'

为什么这不是'function(func f)'作为参数的类型? 一个更好的问题是如何使类型匹配?

1 个答案:

答案 0 :(得分:1)

typedef double func(double)

应该是

typedef double (*func)(double);

确保链接到包含function()的实际实现的源文件。

您需要摆脱func f;中的main()声明。