sách gpt4 ai đã đi

Không thể dynamic_cast

In lại 作者:行者123 更新时间:2023-11-28 06:10:32 27 4
mua khóa gpt4 Nike

我在尝试编译我的代码时遇到以下错误。

ERROR! ..\myCode\CPOI.cpp:68:41: error: cannot dynamic_cast 'screenType' (of type 'struct CScreen*') to type 'struct CGUIScreen*' (target is not pointer or reference to complete type)

Đây là mã của tôi:

基类:

#include "CRoute.h"

enum screen_t{CRTScreen,GUIScreen};

class CScreen
{
protected:
CRoute* m_pRoute;

công cộng:
virtual ~CScreen();
virtual void connecToRoute(CRoute* route) = 0;
virtual void drawRoute() = 0;
virtual screen_t getScreenType() = 0;
};

派生类:

#include "CScreen.h"

class CGUIScreen : public CScreen
{
công cộng:
void drawRoute();
screen_t getScreenType();
void connecToRoute(CRoute* route);
};

错误:

void CPOI::print(int format, CScreen* screenType)
{
if(dynamic_cast(screenType))
{
cout << "printing POI GUI " << endl;
}
}

为什么会这样?

1 Câu trả lời

您没有显示足够的代码,所以只能猜测。

错误可能是因为,在编译有问题的语句时,编译器只能看到 CGUIScreen 的前向声明。 (可能还有 CScreen )。解决方案是 #include定义 CGUIScreen 的头文件类,因此编译器可以看到 dynamic_cast 的完整类定义.

或者,换句话说,像class CGUIScreen;这样的前向声明对于像 dynamic_cast(screenType) 这样的表达式来说是不够的.需要完整的类定义。

关于c++ - 不能 dynamic_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362565/

27 4 0
Bài viết được đề xuất: c++ - 如何处理套接字
Bài viết được đề xuất: c++ - 真正的动态 vector 类型
Bài viết được đề xuất: c++ - std::string 如何在不泄漏的情况下保持内存超出范围?
Bài viết được đề xuất: c++ - 用于存储 3D float 位置的莫顿代码
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com