CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请问关于函数指针问题,高手赐教,内详

楼主MathCad(MathCad)2004-11-01 05:40:46 在 C/C++ / C++ 语言 提问

出现这样的编译错误,问题在什么地方呢?应该如何更正?请各位高手赐教  
   
  c:\Documents   and   Settings\xxx\My   Documents\Visual   Studio   Projects\FrFT\FrFTDoc.cpp(144)   :   error   C2664:   “CFrFTDoc::qtrap”   :   不能将参数   1   从“float   (float,float)”转换为“float   (__cdecl   *)(float,float)”  
                  在匹配目标类型的范围内没有具有该名称的函数  
   
  源程序如下  
   
  float   CFrFTDoc::trapzd(float   a,   float   b,   int   n,   float   (*func)(float,   float),   float   u)  
  {  
  float   x,   tnm,   sum,   del;  
  static   float   s;  
  int   it,j;  
  if   (n==1)  
  {  
  return   (   s   =   0.5*(b-a)*(func(a,u)+func(b,u)));  
  }  
  else  
  {  
  for   (it=1,   j=1;   j<n-1;j++)  
  it<<=1;  
  tnm   =   it;  
  del   =   float((b-a)/tnm);  
  x   =   float(a+0.5*del);  
  for   (sum=0.0,j=1;j<=it;j++,x+=del)  
  sum   +=   func(x,u);  
  s   =   float(0.5*(s+(b-a)*sum/tnm));  
  return   s;  
  }  
  //return   0;  
  }  
   
  float   CFrFTDoc::real(float   x,   float   u)  
  {  
  return   float(   cos((u*u+x*x)/(2*tan(a))   -   (u*x)/(sin(a))));  
   
  }  
   
  float   CFrFTDoc::img(float   x,   float   u)  
  {  
  return   float(   sin((u*u+x*x)/(2*tan(a))   -   (u*x)/(sin(a))));  
  }  
   
  float   CFrFTDoc::qtrap   (float   (*func)(float,float),float   a,   float   b,   float   u)  
  {  
  int   j;  
  float   s,   olds;  
  olds   =   -1.0e30;  
  for   (j=1;j<=JMAX;j++)  
  {  
  s   =   trapzd(a,b,j,func,u);  
  if   (fabs(s-olds)<EPS*fabs(olds))  
  return   s;  
  if   (s==0.0   &&   olds   ==   0.0   &&   j>6)  
  return   s;  
  olds   =   s;  
  }  
  return   0;  
  }  
   
  void   CFrFTDoc::calc()  
  {  
  int   i;  
  float   temp;  
  for   (i=0;i<=2000;i++)  
  {  
  result_real[i]   =   qtrap((real),-1,1,v[i]);  
  result_img[i]     =   qtrap((img),-1,1,v[i]);  
  temp   =   float(1/(sqrt(2*3.1415926*sin(a))));  
  result[i]   =   float(temp*sqrt(result_real[i]*result_real[i]   +   result_img[i]*result_img[i]));  
  }  
  return;  
  } 问题点数:0、回复次数:5Top

1 楼rferen2003(流水)回复于 2004-11-15 23:50:15 得分 0

在匹配目标类型的范围内没有具有该名称的函数  
   
  应该是没有找到real函数或者img函数吧  
   
  -> result_real[i]   =   qtrap((real),-1,1,v[i]);  
  result_img[i]     =   qtrap((img),-1,1,v[i]);Top

2 楼zhangfjj(小张)回复于 2004-11-16 00:10:59 得分 0

单纯从这里来看,应该是没有问题的。  
  Top

3 楼chinadragonss(独孤俊)回复于 2004-11-16 09:19:31 得分 0

调用参数的问题。Top

4 楼oo(为了名副其实,努力学习oo技术ing)回复于 2004-11-16 09:47:39 得分 0

你定义的是:float   (*func)(float,   float)   这个是普通函数  
  但传进去的是   real,这个是成员函数,两个不一样的,成员函数有个隐含的参数this  
  所以两个是不匹配的;  
   
  把float   (*func)(float,   float)   改成:  
  float   (CFrFTDoc::*func)(float,float);  
  调用的时候:  
  return   (   s   =   0.5*(b-a)*(func(a,u)+func(b,u)));  
  改成  
  return   (   s   =   0.5*(b-a)*((this->*func)(a,u)+(this->*func)(b,u)));Top

5 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2004-11-16 10:36:14 得分 0

oo(为了名副其实,努力学习oo技术ing)应该是对的,学习了。。。Top

相关问题

  • 函数指针
  • 指针函数
  • 函数指针
  • 函数指针
  • 函数指针
  • 函数指针和指针函数
  • 函数指针,唉.......
  • 函数指针的问题
  • 函数指针怎么用?
  • 函数指针的问题

关键词

  • 函数
  • real
  • float
  • cfrftdoc
  • qtrap
  • func

得分解答快速导航

  • 帖主:MathCad

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo