请问在c++中,静态函数如何访问非静态成员变量?在c++里如何实现多线程?

wizard0128 2006-08-01 10:11:26
请问在c++中,静态函数如何访问非静态成员变量?在c++里如何实现多线程?

我在做一个小程序,但是需要实现多线程,听同事说,因为在MFC中,静态函数无法访问非静态成员变量,因此这个多线程不好解决,请问大家应该如何解决多线程问题?谢谢
...全文
343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaffy 2006-08-02
  • 打赏
  • 举报
回复
静态函数不能访问非静态成员变量
这个原因和编译有关,因为静态函数是在运行前编译时就建立了的,而非静态成员是在运行时动态建立的,所以自然不能访问了。
我不懂电脑 2006-08-02
  • 打赏
  • 举报
回复
静态函数不能访问非静态成员变量
Banned 2006-08-02
  • 打赏
  • 举报
回复
class WorkUnit
{
public:
static DWORD ThreadFunc(LPVOID lpParam)
{
WorkUnit* pWorkUnit = (WorkUnit*) lpParam;
pWorkUnit->doSomething();
}
public:
...
};
class WorkThread
{
public:
DWORD doWork(...)
{
WorkUnit workUnit;
CreateThread(...,WorkUnit::ThreadFunc,(LPVOID)&workUnit);
}
};
勉励前行 2006-08-02
  • 打赏
  • 举报
回复
類的静态函数是不能直接访问非静态成员变量的。 除非從其他方法得到實例的地址,簡單地說,即是把實例地址做為函數的參數傳遞過去。

多线程程序中,最好少用静态變量,因為很容易引起沖突,過多的加鎖解鎖又會使程序性能不佳。



weixing979 2006-08-01
  • 打赏
  • 举报
回复
能访问吗
线程可以 new ,选择thread object

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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