游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2536|回复: 7

请问类的函数能作为参数传递给另一个类的函数吗?

[复制链接]

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-7-26 11:18:00 | 显示全部楼层 |阅读模式
例如现在有三个类apple,orange,scissors如下:
class apple{
.....
void fall();
};
class orange{
.....
void fall();
};
class scissors{
......
void cut(void(*f)());
};
这种情况中,apple::fall()和orange::fall()能作为参数传给scissors::cut()吗?如果不能,可以用什么方法实现?先谢谢 [em1]

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2006-7-26 11:41:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

不能,考虑用回调类吧

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-26 11:56:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

楼主的代码好糟糕...一句话,不应该写出这类代码,不管能不能传。

4

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2006-7-26 15:10:00 | 显示全部楼层

Re: 请问类的函数能作为参数传递给另一个类的函数吗?

考虑一下 把scissors作为友员类呢?

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2006-7-26 19:19:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

定义一个函数指针类型就可以
比如说
typedef void (*OBJ_FUN)();
然后可以使用OBJ_FUN类型的数据

虽然可以,如果不是静态函数,记得同时传进去被调用者对象指针。

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2006-7-26 19:26:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

class I{ virutal void fall()=0; };
class apple:public I{
.....
void fall();
};
class orange:public I{
.....
void fall();
};
class scissors{
......
I* m_p;
};

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-7-27 01:13:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

class的成员函数如果不是静态的则是__thiscall, 不能传递为CALLBACK, 而static的成员函数则可以传递为CALLBACK类型(__stdcall,就是WINAPI).

21

主题

120

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2006-7-27 19:12:00 | 显示全部楼层

Re:请问类的函数能作为参数传递给另一个类的函数吗?

class A
{
public:
        void func(void)
        {
                cout<<"Hello World\n";
        }
};

typedef void (A::*AFUNC)();

int _tmain(int argc, _TCHAR* argv[])
{
        A at;
        AFUNC f = &A::func;
        A *a = &at;
        (a->*f)();
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 00:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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