游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1655|回复: 3

晚上想到的……还没取名字~ *^^*

[复制链接]

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2004-6-16 04:21:00 | 显示全部楼层 |阅读模式

  1. Class Base
  2. {
  3. Public:
  4.   ...
  5.   virtual int foo() = 0;
  6.   ...
  7. };

  8. Class A : public Base
  9. {
  10. Public:
  11.   ...
  12.   int foo();
  13.   ...
  14. Private:
  15.   ...
  16.   static int (*_foo)();
  17.   ...
  18. }

  19. int A::foo()
  20. {
  21.   return _foo();
  22. }
复制代码


目的用途:
在游戏主程序里声明接口,把实现放入动态连接库,并实现游戏运行期间动态更换函数的具体实现……
载入一个连接库的时候,读取连接库里与foo()接口对应的函数,并把函数地址赋值给_foo。
使用虚函数来访问函数的实现可以得到动态多态特性。
把_foo声明为static可以让更换函数实现之前创建的对象也能使用更换后的新的函数的实现。

请大伙给点意见…… [em10] [em5]

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2004-6-16 10:45:00 | 显示全部楼层

Re:晚上想到的……还没取名字~ *^^*

没什么意见,只要有道理,就能用  :)

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2004-6-16 16:16:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2004-6-16 17:29:00 | 显示全部楼层

Re:晚上想到的……还没取名字~ *^^*

今天早上想到,如果在每个派生类里增加一个static dictionary,把所有methed的函数指针都放进去,那么就可以靠连接库来动态修改对象的解构了,比如在运行时增加一个methed……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-1 23:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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