CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于函数传址的问题!

楼主mero(mero)2003-08-01 07:26:41 在 VC/MFC / 基础类 提问

代码如下:  
   
  CMyDoc*   pDoc   =   GetDocument();  
  typedef   int   (*   MyFunction)(int   a,int   b);  
  MyFunction   pFunction=(MyFunction)   pDoc->teach;  
  int   i=pFunction(   6   ,   9   );  
   
  为什么编译不过去呢?他老是说:   error   C2440:   'type   cast'   :   cannot   convert   from   ''   to   'int   (__cdecl   *)(int,int)'  
  问题点数:50、回复次数:14Top

1 楼xpdavis(咕嘟-不想孤独)回复于 2003-08-01 07:37:30 得分 0

pDoc->teach是什么类型的?可能是这种类型不能进行函数指针的强制转换。Top

2 楼mero(mero)回复于 2003-08-01 07:51:55 得分 0

是int型的,他老是编译不过,怎么回事?Top

3 楼mero(mero)回复于 2003-08-01 08:02:22 得分 0

有人没有呀,帮帮忙呀!!!Top

4 楼mero(mero)回复于 2003-08-01 08:10:17 得分 0

高手来帮忙呀!很急的!Top

5 楼suxk(逍遥小子)回复于 2003-08-01 08:21:50 得分 0

里面的参数都相同吗?Top

6 楼yangchaobj()回复于 2003-08-01 08:27:18 得分 0

为什么要用函数指针指向一个int型的变量?指向一个函数地址才对。  
  这似乎是编译不过的关键。Top

7 楼lyb12345(lyb)回复于 2003-08-01 08:28:51 得分 0

teach的类型与pMyFunction的类型不一样也就是teach不是int   (*   MyFunction)(int   a,int   b)类型Top

8 楼mero(mero)回复于 2003-08-01 08:33:06 得分 0

teach是文档类的一个函数,我要在视图类中调用他,并且是以函数传址的方式调用。  
  如果teach是视图类的函数,可以进行传址调用,为什么放到视图类中就不行了呢?Top

9 楼mero(mero)回复于 2003-08-01 08:34:07 得分 0

这是teach函数的定义:int   teach(int   a,int   b);Top

10 楼mero(mero)回复于 2003-08-01 08:36:12 得分 0

to     yangchaobj(太白金星)  
    你说怎么引用函数地址?Top

11 楼titi_lima(titilima(李马)的马甲.net)回复于 2003-08-01 08:43:19 得分 50

举个例子,假设有如下类:  
  class   CTest  
  {  
  public:  
  int   x;  
  void   func(int   a);  
  };  
  那么,你是不能通过定义一个  
  typedef   void   (*   test)(int);  
  的函数指针来取得func的地址并调用之的,因为test类型是void   (__cdecl   *   __cdecl   test)(int),而CTest::func是一个成员函数,它的类型是void   __thiscall   CTest::func(int),这就导致了类型不匹配。  
  解决的办法就是将func声明为static类成员函数。Top

12 楼mero(mero)回复于 2003-08-01 08:47:25 得分 0

呵呵,是呀!  
  他为什么会是void   (__cdecl   *   __cdecl   test)(int)?Top

13 楼mero(mero)回复于 2003-08-01 08:50:23 得分 0

还有别的解决方法吗?Top

14 楼yangchaobj()回复于 2003-08-01 11:28:04 得分 0

引用类中的函数比较麻烦,要涉及到this指针的传递。  
  不如用static修饰副。  
   
  要不就放到全局。Top

相关问题

  • javesript函数中,参数如何传址
  • 函数传值
  • java类中的方法就是函数了,函数参数全是传值了,传址参数怎样表示?
  • 关于函数Function 传值和传地址的问题
  • 如何将传递成员函数地址?
  • 函数中按址传递变量,如何赋值?
  • ASP.NET中函数能不能对session变量进行传址
  • 模板函数地址
  • 向函数传递数组
  • 函数传递问题?

关键词

  • 函数
  • 视图
  • 指针
  • teach
  • 调用
  • 类型
  • myfunction
  • 传址
  • cdecl
  • ctest

得分解答快速导航

  • 帖主:mero
  • titi_lima

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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