我有两节课:
/*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"返回NULL或not NULL根据 …