免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3733 | 回复: 17
打印 上一主题 下一主题

[C++] c++类怎样实现函数指针? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-21 09:22 |只看该作者 |倒序浏览
在C中函数指针定义
类型 (*Function)(参数)
如:

int (*function)();
int f1()
{
return 0;
}
main()
{
function=f1;
(*function)();
}
但在C++类中怎样实现呢?请指教!

论坛徽章:
0
2 [报告]
发表于 2004-04-21 09:36 |只看该作者

c++类怎样实现函数指针?

不懂什么意思啊.

论坛徽章:
0
3 [报告]
发表于 2004-04-21 10:06 |只看该作者

c++类怎样实现函数指针?

看下面的代码:

  1. #include <iostream>;

  2. class AA
  3. {
  4. public:
  5. int (* fun)();
  6. };

  7. extern "C"
  8. {
  9. int k()
  10. {
  11. cout << "this is a pointer" << endl;
  12. return 0;
  13. }
  14. }

  15. int main()
  16. {
  17. AA a;
  18. AB b;

  19. a.fun = k;
  20. a.fun();

  21. return 0;
  22. }
复制代码


楼主是不是这个意思啊?^_^

不过在c++中,最好还是用虚基类来代替函数指针吧,呵呵

论坛徽章:
0
4 [报告]
发表于 2004-04-21 11:04 |只看该作者

c++类怎样实现函数指针?

我可能没有说清楚,如下
#include <stdio.h>;
class Temp;
class TApp;
typedef void (Temp::*Fun)();
class TApp
{
    public:
Fun    Function;
};
class Temp
{
    public:
        void f1()
        {
        printf("in f1\n";
        }
        void InsertFun(TApp * app,Fun a)
        {
        app->;Function=a;
        }
};
main()
{   
   Temp  *aa;
   TApp  *bb;
   aa=new Temp;
   bb=new TApp;
   aa->;InsertFun(bb,(Fun)Temp::f1);
   //bb怎样调用函数Function;
   //bb->;Function();
   delete bb;
   delete aa;
}

论坛徽章:
0
5 [报告]
发表于 2004-04-21 11:19 |只看该作者

c++类怎样实现函数指针?

有道理!函数重载和模板的出现,在C++中几乎没有函数指针的用武之地了。

论坛徽章:
0
6 [报告]
发表于 2004-04-21 11:34 |只看该作者

c++类怎样实现函数指针?

能不能说清楚点,在线等

论坛徽章:
0
7 [报告]
发表于 2004-04-21 16:23 |只看该作者

c++类怎样实现函数指针?

一个类封装了数据成员以及对类中数据进行处理的函数成员。对于类中的数据成员和函数成员,只能通过类对象来访问,任何越过类对象的访问操作都是非法的。比如,C++禁止用一个指向函数的指针来访问一个类的成员函数。同样,在 TApp 类中不通过 Temp 的对象、而是想直接调用另一个类 Temp中的成员函数 f1,这是做不到的。不知道你这样做的目的何在。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-04-22 12:00 |只看该作者

c++类怎样实现函数指针?

为什么  
aa->;InsertFun(bb,(Fun)Temp::f1);
这句也编译不过呢?(它里面只是一个函数赋值的过程哪.-----没有涉及到函数调用啊)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-04-22 12:11 |只看该作者

c++类怎样实现函数指针?

赋值,也要参数合法吧。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-04-22 12:28 |只看该作者

c++类怎样实现函数指针?

typedef void (Temp::*Fun)();

Fun  a = (Fun)Temp::f1;  //实参Temp::f1不正是Temp的成员函数指针吗?
app->;Function = a; //这里不也同理?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP