游戏开发论坛

 找回密码
 立即注册
搜索
楼主: Jeminai

成员函数指针的问题(看到那么多人提问题我也提一个)

[复制链接]

14

主题

166

帖子

171

积分

注册会员

Rank: 2

积分
171
发表于 2006-10-25 22:19:00 | 显示全部楼层

Re: Re:成员函数指针的问题(看到那么多人提问题我也提

千里马肝: Re:成员函数指针的问题(看到那么多人提问题我也提一个)

谁要是能用c++实现出以下这样,尽量放狗咬我。
Game=PC;
Game=g_sony.PS3;
Game=g_nintendo.Wii;

g_sony和g_nintendo都基层同一个基类应该可以实现后面的两个,但是无法实现指向全局的函数,只能指向成员函数。

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-10-25 23:13:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

->*

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
 楼主| 发表于 2006-10-26 08:45:00 | 显示全部楼层

Re: 成员函数指针的问题(看到那么多人提问题我也提一个

我平时是这样用的:

class Sony
{
public:
void PS3()
{
  //...随便写什么
}
}g_sony;

class Nintendo
{
public:
void Wii()
{
  //...随便写什么
}
}g_nintendo;

void PC(LPVOID context)
{
//...随便写什么
}

void Sony_PS3(LPVOID context)
{
Sony *ptr=(Sony*)context;
ptr-&gtS3();
}

void Nintendo_Wii(LPVOID context)
{
Nintendo *ptr=(Nintendo*)context;
ptr->Wii();
}

void (*Game)(LPVOID context);

void main()
{
Game=PC;
Game(NULL);

Game=Sony_PS3;
Game(&g_sony);

Game=Nintendo_Wii;
Game(&g_nintendo);
}


由于需要一个全局函数中转,所以我觉得比较麻烦想找个更简单的方法。 [em8]

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-26 09:37:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

10楼的说的很对,为了实现LZ的终极目标,除了从语法解析这一层来做别无他法
因为C++作为一种强类型语言,仅能从template <typename T>这一层来做
但如果放在如python一类的弱类型语言中,应该就可以做到了

LZ也提到,可能函数类型多种多样,参数数量各异,难道每多一个参数就要写一个这样的模板吗?其实是对的,目前C++中,想要达到你的需求,就是必须手工劳动干体力活。
你可以去翻一下boost::functional的源码,如果没记错的话,它一共提供了最多达50个参数的模板,实现也就是一个一个硬写的

其实程序这个东西很简单,通常想要用起来更方便,实现起来就更复杂

结论是:因为C++本身就不太适合做这种工作,你应该内嵌一个弱类型脚本来做

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-10-26 09:55:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

c++0x将开始提供对concept和可变参数的支持,到时候functor这一块的程序库应该会有极大大改善。

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-26 12:30:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

突然想到一个
用宏
自动生成代码,就是LZ所说的那些全局中转函数
具体形式就像MFC里常见的那些一样

当然,前提是打死你都偏要跟boost合不来

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
 楼主| 发表于 2006-10-26 15:52:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

对,用宏倒是值得考虑啊。

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-26 16:34:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

OK,那现在可以做结案陈词了。

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2006-10-27 02:43:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

呵呵,长见识了,现在知道了.

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-27 10:15:00 | 显示全部楼层

Re:成员函数指针的问题(看到那么多人提问题我也提一个)

LZ应该对template有一种恐惧心理
原因如下
既然你可以接受用macro来做code generator,那为什么不去使用更好的template来做这个工作呢,至于理由,很多教课书有没有讲,有没有讲,有没有讲,有讲麻~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 16:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表