类的成员函数作为回调函数

wwll123 2008-12-02 09:21:16
由于设计需要,我必须把一个类的成员函数作为回调函数,所以这个函数要写成static,而这个回调函数还必须要访问类中非静态的成员变量,如何用这个静态的成员函数访问非静态的成员变量呢?请高手指点,非常感谢!
...全文
75 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwll123 2008-12-02
  • 打赏
  • 举报
回复
非常感谢zmlovelx,问题已经解决
lgccaa 2008-12-02
  • 打赏
  • 举报
回复
up
iBug168 2008-12-02
  • 打赏
  • 举报
回复
楼上正解,不管是c里面的回调还是C++里面的回调,一般都要传 入一个"this";


如果LZ想简单化问题,大允许的情况下使用全局变量也可以达到这个目的.
帅得不敢出门 2008-12-02
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

class point {
private: int n;
public:
void setn(int m){n=m;}
void static funp(point &pth);
};
void point::funp(point &pth)
{
cout << pth.n << endl; }
int main()
{
point t;
t.setn(10);
point::funp(t);
return 0;
}

10
帅得不敢出门 2008-12-02
  • 打赏
  • 举报
回复
传一个this指针进去

class point
{
private:
int n;
public:
void funp(point &pth);
};
void point::funp(point &pth)
{
cout << pth.n << endl;
}
int main()
{
point t;
t.n = 10;
point::funp(t);
return 0;
}
sffofn 2008-12-02
  • 打赏
  • 举报
回复
能不能试试把你需要访问的非静态的成员变量的值通过参数传进去呢?如果你只是需要值的话
qqwx_1986 2008-12-02
  • 打赏
  • 举报
回复
静态成员函数不能访问非静态成员变量....
yc_8301 2008-12-02
  • 打赏
  • 举报
回复
这个估计是不可以,不能在 静态函数中调用非静态方法。。目前想到两个办法:
1.参照C语言的写法,可以把回调函数写成 宏。
2.定义成员函数指针作为回调函数,这样就可以实现你的要求。
以上,仅供参考。。
等待星级 大师回答。。。
yyyapple 2008-12-02
  • 打赏
  • 举报
回复
基本不可能
yc_8301 2008-12-02
  • 打赏
  • 举报
回复
沙发。。哈哈

64,683

社区成员

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

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