Why is DECLARE_DYNAMIC & IMPLEMENT_DYNAMIC nessary for DYNAMIC_DOWNCAST?
I have two classes: /*Switch.h*/ class CSwitch : public CDeviceEntity {} /*EndSystem.h*/ class CEndSystem : public CDeviceEntity {} but when I use: CDeviceEntity* dev = NULL; dev = topo->headList[i]->node; if ( DYNAMIC_DOWNCAST( CEndSystem, dev ) != NULL ) {} " DYNAMIC_DOWNCAST " always returns not NULL while dev is kind of class CEndSystem or class CSwitch . If use: /*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) }