Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE
Posted
技术标签:
【中文标题】Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE【英文标题】:Microsft Visual Studio C++ 2019 compile error with IMPLEMENT_DYNCREATE 【发布时间】:2020-09-26 10:21:43 【问题描述】:我正在开发一个需要运行多任务的程序,以便我可以运行计时器。
这是包含文件 (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"
【问题讨论】:
E0135 不是编译器或链接器错误。您是否收到任何编译器或链接器错误?如果有,它们是什么? 您还应该将严格来说不正确的protected: MyRunTimers::MyRunTimers(); MyRunTimers::~MyRunTimers();
更改为protected: MyRunTimers(); ~MyRunTimers();
无需在类定义中仅在外部使用MyRunTimers::
。
【参考方案1】:
如果类声明(头文件)中有DECLARE_DYNAMIC(MyClass)
,那么定义文件中需要IMPLEMENT_DYNAMIC(MyClass, BaseClass)
。
或者,如果您确实需要 IMPLEMENT_DYNCREATE()
,那么您应该在类定义中包含DECLARE_DYNCREATE()
。
有关差异的讨论,请参见此处:Why should i use DECLARE_DYNAMIC instead of DECLARE_DYNCREATE?。
【讨论】:
以上是关于Microsoft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE的主要内容,如果未能解决你的问题,请参考以下文章
microsoft visual studio 2010下载
怎么用microsoft visual studio制作一个选择题