提示"cannot instantiate abstract class due to following members"?
解决方法:从基类派生来的类,其中有需要子类实现的纯虚函数必须实现,如果用不着就在实现的时候写为空的
如 TaskBase.h中的类为基类
class CTaskBase
{
private:
/*1.需子类实现的纯虚函数*/
virtual bool OnTaskStart() = 0;
virtual void OnTaskStop() = 0;
virtual void OnDealReportTask(CVorxProto* pTask) = 0;
virtual void OnDealQueryTask(CVorxProto* pTask) = 0;
virtual void OnDealHeartReturn(CVorxProto* pTask) = 0;
virtual void OnDealHeartQuery(CVorxProto* pTask) = 0;
}
当派生出一个类
class CTaskDeal : public CTaskBase
{
virtual bool OnTaskStart() = 0;
virtual void OnTaskStop() = 0;
virtual void OnDealReportTask(CVorxProto* pTask) = 0;
virtual void OnDealQueryTask(CVorxProto* pTask) = 0;
virtual void OnDealHeartReturn(CVorxProto* pTask) = 0;
virtual void OnDealHeartQuery(CVorxProto* pTask) = 0;
}
这些个函数在CTaskDeal中的.cpp文件必须要实现即
bool CMatrixAgent::OnTaskStart()
{
m_thread.StartThread();
return true;
}
void CMatrixAgent::OnTaskStop()
{
}
void CMatrixAgent::OnDealReportTask(CVorxProto* pTask)
{
}
void CMatrixAgent::OnDealQueryTask(CVorxProto* pTask)
{
}
void CMatrixAgent::OnDealHeartReturn(CVorxProto* pTask)
{
}
void CMatrixAgent::OnDealHeartQuery(CVorxProto* pTask)
{
}