问题描述
我正在开发一个需要运行多任务的程序,以便可以运行计时器。
以下是包含文件(MyRunTimers.h
):
#pragma once
#include <afxwin.h>
class MyRunTimers :
public CObject
{
int m_nNum;
bool m_bDone = FALSE;
CObject* m_pOwner = NULL;
bool m_bAutoDelete = FALSE;
void MyTimerThread();
public:
DECLARE_DYNAMIC(MyRunTimers)
protected:
MyRunTimers::MyRunTimers();
MyRunTimers::~MyRunTimers();
};
这是cpp文件(MyRunTimers.cpp
):
#include "pch.h"
#include "MyRunTimers.h"
IMPLEMENT_DYNCREATE(MyRunTimers,CObject)
MyRunTimers::MyRunTimers()
{
m_bDone = FALSE;
m_pOwner = NULL;
m_bAutoDelete = FALSE;
}
MyRunTimers::~MyRunTimers()
{
}
当我尝试编译IMPLEMENT_DYNCREATE
时以红色突出显示,并且得到:
`E0135 - class "MyRunTimers" has no member "CreateObject"
解决方法
如果类声明(头文件)中有DECLARE_DYNAMIC(MyClass)
,则定义文件中需要IMPLEMENT_DYNAMIC(MyClass,BaseClass)
。
或者,如果您实际上需要 IMPLEMENT_DYNCREATE()
,则在类定义中应该使用DECLARE_DYNCREATE()
。
有关差异的讨论,请参见此处:Why should i use DECLARE_DYNAMIC instead of DECLARE_DYNCREATE?。