游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3765|回复: 12

终于理解了一个东西

[复制链接]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-4-22 17:21:00 | 显示全部楼层 |阅读模式
//.h里的

typedef void (*func_X)(void*)

//临时结构
class tempData
{
  func_X func_t;
  void* data_t;
}

//临时函数
int tempFunc(void* data_in);

-----------------------------

//.cpp里的
int tempFunc(void* data_in)
{
  tempData* td = (tempData*)data_in;
  td->func_t(td->data_t); // 这行……强
  delete td;
  return 0;
}

看了一下午终于看懂了(还是有点晕),好BT的方法,或者我少见多怪了  [em7] [em10]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-4-22 17:52:00 | 显示全部楼层

Re:终于理解了一个东西

相当于可以把一个函数拆成函数指针和参数指针,然后放在一个 tempData结构 的实例里面 , 再把这个 tempData 实例的 指针 作为参数传到 tempFunc 里面合成一个原函数运行,分解了再合成运行……我Kao [em4]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-4-22 18:00:00 | 显示全部楼层

Re:终于理解了一个东西

另外一个问题

现在有 void func()

那函数名 func 相当于一个 返回值为void的函数指针?

0

主题

13

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2007-4-23 09:58:00 | 显示全部楼层

Re:终于理解了一个东西

典型函数指针的用法~~~
这样用法是基于面向对象的函数指针!
少用是妙,用多了就是滥!~~~

0

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-23 11:19:00 | 显示全部楼层

Re:终于理解了一个东西

好晕哦。。

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2007-4-23 16:13:00 | 显示全部楼层

Re:终于理解了一个东西

非常有用的东西,对回调函数的封装是常见的技术吧。

td->func_t(td->data_t); // 这行……强
这行应该写为 (*td->func_t)(td->data_t); 才标准吧?不然在GCC下好象不能通过。

我估计在很多库里面,这些都是做为模板存在。一般不会这么用,容易出错。

14

主题

118

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2007-4-23 16:20:00 | 显示全部楼层

Re:终于理解了一个东西

所以说C++有时会令人头疼,库技术与应用技术同时使用。

27

主题

1289

帖子

1374

积分

金牌会员

Rank: 6Rank: 6

积分
1374
QQ
发表于 2007-4-24 12:49:00 | 显示全部楼层

Re:终于理解了一个东西

又是程序

32

主题

108

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2007-4-25 00:26:00 | 显示全部楼层

Re:终于理解了一个东西

typedef void (*func_X)(void*)
这行起什么作用?

11

主题

102

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2007-4-25 11:39:00 | 显示全部楼层

Re:终于理解了一个东西

typedef void (*func_X)(void*)
声明一个函数指针类型.类型keyword是"func_X"

就好像typedef int MYINT;
类型keyword是"MYINT"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 16:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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