回调类成员函数的问题(分不够再加)

higter 2006-09-21 04:15:44
typedef void (Func)(int x);
void _func(Func *fc = NULL)
{

}
以上不能更改现有问题如下
class A
{
static void aa(int a);
void bb(){
_func(aa);
};
};
这个是没问题的,
我想aa不申请为static,以便访问A的其它成员,怎么办??
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
higter 2006-09-22
  • 打赏
  • 举报
回复
_func不是我不想改,而是我改不了,定死了,
Golfen 2006-09-21
  • 打赏
  • 举报
回复
或者你把 _func函数加一个参数,给它传对象指针;然后typedef void (A::*Func)(int x);
void _func(A *pa, Func *fc) {
(pa->*fc)(aa);
}
foring 2006-09-21
  • 打赏
  • 举报
回复
尝试用成员函数的指针, typedef void (ClassName::*pfnMember)( int i )看看
superarhow 2006-09-21
  • 打赏
  • 举报
回复
广告:)
请看偶滴blog上:http://blog.csdn.net/superarhow/archive/2006/07/10/898261.aspx
OOPhaisky 2006-09-21
  • 打赏
  • 举报
回复
我想aa不申请为static,以便访问A的其它成员,怎么办??
----------------------------------------------------------
非static成员函数一定要绑定到一个对象上的,所以无法实现楼主的要求。
晨星 2006-09-21
  • 打赏
  • 举报
回复
要不你用全局变量来传递对象地址?
千成别说这个主意是俺出的。-_-
晨星 2006-09-21
  • 打赏
  • 举报
回复
而且感觉设计上也有问题:static函数本身跟对非静态成员是不会有直接联系的。
如果是需要一个辅助对象才能完成的任务,那很简单,在这个static函数中定义一个类的对象,然后在上面调它的方法就是了;
如果根本不需要辅对象,那有什么必要访问非静态成员?所有跟对象状态无关的成员函数都应该是静态的。
HappyTree 2006-09-21
  • 打赏
  • 举报
回复
不是static,就必然涉及到this指针,对函数指针里没有这个指针参数,感觉没有办法实现。
晨星 2006-09-21
  • 打赏
  • 举报
回复
而且你那个int参数说不定还有别的用处。
晨星 2006-09-21
  • 打赏
  • 举报
回复
不能,类的非静态成员函数指针不能转为一般的函数指针。
要访问类的非静态成员,说明你要使用对象,而你的回调方法中没有提供传递对象指针的机制,既使让你用也没法用啊。没有对象,讨论非静态成员的访问是没有意义的。

除非,你把一个对象的this指针强制转成int型,从那个int参数中传进去,进去后再恢复出原来的类型,然后访问它的成员。-_-不过这种方法不能跨平台,因为int不一定能放得下一个指针类型。:(

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧