免费注册 查看新帖 |

Chinaunix

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

[C++] c++类函数指针问题 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-19 17:10 |只看该作者 |倒序浏览
class TApp1;
typedef void  (TApp1::*MEMBERFUNCTION)();
class TApp1
{
        MEMBERFUNCTION   Test;
        void Fun1()
        {
        ...
        }
        void Fun2()
        {
        ...
        }
        void CallFun()
        {
        //调用test所指向的函数指针,如果Test指向Fun1,调用Fun1函数,如果test指向Fun2,调用Fun2函数
        //其它地方都调试通过,此处不知怎么写代码,希望各位指点????????谢谢!!!!
        (this->;*Test)();//这样就实现了,我本人非常zjqyb
        }
}
main()
{
        class TApp2 : public TApp1
        {
                void InsertFun(MEMBERFUNCTION memberfunction)
                {
                 test=memberfunction;                
                  }
        }
        //将TApp2::Fun1函数指针赋给Test,如果
        //将TApp2::Fun2函数指针赋给Test,CallFun就调用CallFun
        InsertFun((MEMBERFUNCTION)TApp2::Fun1);
        //用Fun2调用InsertFun所登记的函数;
        CallFun();
}

我正在编写一个菜单程序,先将每一个菜单所对应要执行的函数登记,然后选择菜单时执行该函数,望各位提点建议!

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

c++类函数指针问题 ?

typedef void (TApp1::*MEMBERFUNCTION);

你想做什么,这样是对的吗?

论坛徽章:
0
3 [报告]
发表于 2004-05-19 19:43 |只看该作者

c++类函数指针问题 ?

原帖由 "lenovo" 发表:
typedef void (TApp1::*MEMBERFUNCTION);

你想做什么,这样是对的吗?


C语言中这样是可以的,但不知道C++中行不行,最近刚开始学习C++,也不是很懂!关注!!!

论坛徽章:
0
4 [报告]
发表于 2004-05-20 09:26 |只看该作者

c++类函数指针问题 ?

上面有点错误,望大家看看
typedef void (TApp1::*MEMBERFUNCTION)();

论坛徽章:
0
5 [报告]
发表于 2004-05-20 10:12 |只看该作者

c++类函数指针问题 ?

void CallFun()
{
  (this->;*Test)();
}

论坛徽章:
0
6 [报告]
发表于 2004-05-20 11:32 |只看该作者

c++类函数指针问题 ?

想做一个菜单,先将每一个菜单所对应要执行的函数登记,然后选择菜单时执行该函数。在C++中可以用函数指针数组,其结构如下:
首先定义执行函数如:
void function1_menu();
void function2_menu();
void function3_menu();
...
然后在main() 函数中定义函数指针数组,如下:
void (* menu[3])(void) = {function1_menu,function2_menu,funtion3_menu};

最后,使用方法一般为:
int choice;
cout << "Ente a number between 0 and 2:";
cin >;>; choice;
while (choice >;= 0 && choice < 3)
{
      (* menu[choice])();
      cout << "Enter a number between 0 and 2:";
      cin >;>; choice;
}

论坛徽章:
0
7 [报告]
发表于 2004-05-20 11:45 |只看该作者

c++类函数指针问题 ?

to zjqyb      
太感谢了,我用你的办法坚决了。
to zeng_zong
你的办法也很好,但不是基于类的函数指针!

都是好人
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP