游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: D_BOY_JQ

类成员函数指针做另一个类的成员函数参数时的问题

[复制链接]

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-8-17 00:00:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

还有个办法~~
把当前要用到的资源路径写到脚本里去,
以下脚本用到了lua中的表:
TextureRes
{
".\texture\1.bmp"
".\texture\2.bmp"
...
}
或更复杂一点
TextureRes
{
stage1
{
".\texture\1.bmp"
".\texture\2.bmp"
...
}
stage2
{
...
}
...
}
用的时候一个循环就搞定了
另:如果是小游戏的话就用直接用d3d的自动管理好了,自己管理还是比较麻烦的

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2005-8-17 09:47:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

为什么大家就不喜欢用template呢
我就用 模版 + map + 参数类 (自己写的) ,基本实现了按方法名访问对象方法(需要有一个注册对外方法的步骤)。

1

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-8-17 10:20:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

boost库里有现成的东西
类似stl的bind1st
将对象的指针绑定到成员函数的第一个参数,实际传入的是个函数对象的指针。
boost::function<int (X*, int)> f;

f = &X::foo;
  
X x;
f(&x, 5);

1

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-8-17 10:23:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

或者
boost::function<int (int)> f;
X x;
f = std::bind1st(
      std::mem_fun(&X::foo), &x);
f(5); // Call x.foo(5)

以上语法在有些编译器上不能用vc6和vc7.0都不行,要vc7.1
这些都支持
GNU C++ 2.95.x, 3.0.x, 3.1.x
Comeau C++ 4.2.45.2
SGI MIPSpro 7.3.0
Intel C++ 5.0, 6.0
Compaq's cxx 6.2
Microsoft Visual C++ 7.1

1

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-8-17 10:29:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

简单应用
可以直接把
std::bind1st(std::mem_fun(&X::foo), &x)
作为参数传入就行了,不用boost库了。

1

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-8-17 10:42:00 | 显示全部楼层

Re:类成员函数指针做另一个类的成员函数参数时的问题

学好范型很重要,看了boost库,你就会发现范型的强大,大大开阔眼界
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 10:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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