相关疑难解决方法(0)

为什么DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC对于DYNAMIC_DOWNCAST来说是必要的?

我有两节课:

/*Switch.h*/
    class CSwitch : public CDeviceEntity {}
/*EndSystem.h*/
    class CEndSystem : public CDeviceEntity {}
Run Code Online (Sandbox Code Playgroud)

但是当我使用时:

CDeviceEntity* dev = NULL;
dev = topo->headList[i]->node;
if ( DYNAMIC_DOWNCAST( CEndSystem, dev ) != NULL ) {}
Run Code Online (Sandbox Code Playgroud)

" DYNAMIC_DOWNCAST"总是返回not NULL而dev是一种class CEndSystem或者class CSwitch.

如果使用:

/*Switch.h*/
    class CSwitch : public CDeviceEntity { DECLARE_DYNAMIC(CSwitch) } 
    and
/*Switch.cpp*/
    IMPLEMENT_DYNAMIC(CSwitch, CDeviceEntity)
/*EndSystem.h*/
    class CEndSystem : public CDeviceEntity { DECLARE_DYNAMIC(CEndSystem) }
    and
/*EndSystem.cpp*/
    IMPLEMENT_DYNAMIC(CEndSystem, CDeviceEntity)
Run Code Online (Sandbox Code Playgroud)

" DYNAMIC_DOWNCAST"返回NULLnot NULL根据 …

c++ mfc dynamic downcast

1
推荐指数
1
解决办法
5683
查看次数

标签 统计

c++ ×1

downcast ×1

dynamic ×1

mfc ×1