【发布时间】:2015-07-11 22:42:26
【问题描述】:
我在尝试编译我的代码时遇到以下错误。
错误! ..\myCode\CPOI.cpp:68:41: 错误: 不能 dynamic_cast 'screenType'('struct CScreen*' 类型)输入'struct CGUIScreen*' (目标不是完整类型的指针或引用)
这是我的代码:
基类:
#include "CRoute.h"
enum screen_t{CRTScreen,GUIScreen};
class CScreen
{
protected:
CRoute* m_pRoute;
public:
virtual ~CScreen();
virtual void connecToRoute(CRoute* route) = 0;
virtual void drawRoute() = 0;
virtual screen_t getScreenType() = 0;
};
派生类:
#include "CScreen.h"
class CGUIScreen : public CScreen
{
public:
void drawRoute();
screen_t getScreenType();
void connecToRoute(CRoute* route);
};
还有错误:
void CPOI::print(int format, CScreen* screenType)
{
if(dynamic_cast<CGUIScreen*>(screenType))
{
cout << "printing POI GUI " << endl;
}
}
为什么会这样?
【问题讨论】:
-
在派生类中创建虚拟方法,然后重试。您必须覆盖所有纯虚函数。
-
请发帖minimal, complete, and verifiable example。这里没有任何问题。你确定你包含了你进行强制转换的派生类定义吗?
标签: c++ class casting abstract-class