怎么才能在静态成员函数里调用非静态成员函数和非静态成员变量?

ColderRain 2003-10-13 09:28:57
用什么方法才能实现在静态成员函数里调用非静态成员函数和非静态成员变量?
例如:
class A
{
public:
a()
{
}
void Handle()
{
};
static void Prc();
private:
int i;
};

void A::Prc()
{
i++; //?? 用什么方法可以实现这样?
Handle(); //??
}
...全文
353 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ColderRain 2003-10-14
  • 打赏
  • 举报
回复
bcpl说的是对的,不好意思,因为多次调用,导致全局变量无效,我才发现这个BUG。
感谢各位了。
  • 打赏
  • 举报
回复
ColderRain(iFly):

  bcpl(我是宇宙中的一粒沙子) 的意思是说,将 i 声明为全局变量,
而不再作为成员变量。即不将 i 封装到类中。
ColderRain 2003-10-14
  • 打赏
  • 举报
回复
我终于看到希望了。ATL中使用的是Thunk技术,但我没有找到它的源代码。
atEleven 2003-10-13
  • 打赏
  • 举报
回复
----窗口过程中调用虚成员函数

觉得采用ATL的方法,可以比较完美的解决这个问题

下面这个是详细介绍,并给出了ATL窗口过程处理的简单模拟.可以参考一下:
http://www.codeproject.com/atl/atl_underthehood_5.asp
bcpl 2003-10-13
  • 打赏
  • 举报
回复
不知道为什么“全局变量加了,运行不能通过。加了静态成员函数也不行。”
ColderRain 2003-10-13
  • 打赏
  • 举报
回复
我其实是想在窗口过程中调用虚成员函数。
ColderRain 2003-10-13
  • 打赏
  • 举报
回复
写错了,是加了静态成员变量也不行。
ColderRain 2003-10-13
  • 打赏
  • 举报
回复
全局变量加了,运行不能通过。加了静态成员函数也不行。
bcpl 2003-10-13
  • 打赏
  • 举报
回复
加个全局变量咯
ColderRain 2003-10-13
  • 打赏
  • 举报
回复
TO:bcpl
如果不允许改变参数呢?
bcpl 2003-10-13
  • 打赏
  • 举报
回复
给Prc加个对象指针参数

void A::Prc(A *a)
{
a->i++;
a->Handle();
}
调用时
A a;
a.Prc(&a);

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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