高手请问有这么一个问题,我准备封装一个线程类,是这样设计的

washingli 2004-07-04 10:11:58
高手请问有这么一个问题,我准备封装一个线程类,是这样设计的
class CThread
{
public:
static DWORD WINAPI ThreadProc(LPVOID pV)
{
CThread *pThread=(CThread *)pV;
pThread->ClassProc();
return 0;
}

virtual void ClassProc()
{
//TRACE("this is a test");
//在这里实现的功能实现
}

void StartThread()
{
m_hThread=CreateThread(NULL,0,ThreadProc,(LPVOID)this,0,&m_dwThreadID);
ASSERT(m_hThread != NULL);
}
private:
HANDLE m_hThread;
DWORD m_dwThreadId;
};

class CThreadChild :public CThread
{
public:
virtual void ClassProc()
{
//TRACE("this is a test");
//在这里实现的功能实现
}

};
//虚拟使用,只是拿来演示实际并不是这样用
void main()
{
CThreadChild Thread;
//create a thread
Thread.StartThread();

}


问题出在类型转换的时候

CThreadChild 的对象转换成
CThreadChild *pChild=new CThreadChild;
.....
CreateThread中做得
pV=pChild;
.....
CThread pThread= (CThread *)pV;
//想用多态调用CThreadChild 的ClassProc()但失败了
pThread.ClassProc();
...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mahatma_cn 2004-07-04
  • 打赏
  • 举报
回复
CThread pThread= (CThread *)pV;
//想用多态调用CThreadChild 的ClassProc()但失败了
pThread.ClassProc();
-----------------------------
这句不知道是你写错了还是我实在不懂,多态要通过指针或者引用调用才行的。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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