请问哈这个程序到底是怎么回事,不能调用里面函数呢?
UINTThread2(LPVOID)//线程1实验代码{CLLKView::DrawRectangleHollow();intm_nUpper=0;CLLKView::...
UINT Thread2(LPVOID)//线程1 实验代码
{
CLLKView::DrawRectangleHollow();
int m_nUpper=0;
CLLKView::DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
CLLKView::DrawProgress(m_nUpper);
}
return 0;
}
1>h:\c++文件\llk\llk\llkview.cpp(55) : error C2352: “CLLKView::DrawRectangleHollow”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(69) : 参见“CLLKView::DrawRectangleHollow”的声明
1>h:\c++文件\llk\llk\llkview.cpp(57) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明
1>h:\c++文件\llk\llk\llkview.cpp(63) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明 展开
{
CLLKView::DrawRectangleHollow();
int m_nUpper=0;
CLLKView::DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
CLLKView::DrawProgress(m_nUpper);
}
return 0;
}
1>h:\c++文件\llk\llk\llkview.cpp(55) : error C2352: “CLLKView::DrawRectangleHollow”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(69) : 参见“CLLKView::DrawRectangleHollow”的声明
1>h:\c++文件\llk\llk\llkview.cpp(57) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明
1>h:\c++文件\llk\llk\llkview.cpp(63) : error C2352: “CLLKView::DrawProgress”: 非静态成员函数的非法调用
1> h:\c++文件\llk\llk\llkview.h(68) : 参见“CLLKView::DrawProgress”的声明 展开
1个回答
展开全部
线程函数里是不能这样调用类成员函数的。你可以把线程回调函数设置为类成员函数,但要是static,而且不能访问类成员变量,不方便,还是用下一种方法吧。
在主线程CreateThread的时候,把this指针当作参数传进来就OK了,这是最方便的做法。
UINT WINAPI Thread2(LPVOID Para)//线程1 实验代码
{
CLLKView* clk = Para;
clk->DrawRectangleHollow();
int m_nUpper=0;
clk->DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
clk->DrawProgress(m_nUpper);
}
return 0;
}
如果线程很多,自己做安全保障措施。
在主线程CreateThread的时候,把this指针当作参数传进来就OK了,这是最方便的做法。
UINT WINAPI Thread2(LPVOID Para)//线程1 实验代码
{
CLLKView* clk = Para;
clk->DrawRectangleHollow();
int m_nUpper=0;
clk->DrawProgress(m_nUpper); // 总共400个时间
int m_nSpeed=2;
for(int i=1;i<200;i++)
{
Sleep(300);
m_nUpper=m_nUpper+m_nSpeed;
clk->DrawProgress(m_nUpper);
}
return 0;
}
如果线程很多,自己做安全保障措施。
追问
CLLKView* clk = Para;;这句中不能从LPVOID转换成CLLKView*类型,请问哈这位高手,现在该怎么转换呢?谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询