两个子类转换成父类后 如何判断其转换前的子类类型?
就是有A,B两上类的父类是X.
当A或B转换成X后 如果再判断其转换前的类型?
用typeid得到的还是现在的父类型 有其它方法不?
[解决办法]
我再想,如果判断数据大小和哪个子类一样来粗略判断
不过这要求两个类数据大小不同阿
[解决办法]
class X{...public: virtual CString GetObjID(void) { return _T("X"); }};class A : public X{...public: virtual CString GetObjID(void) { return _T("A"); }};class B : public X{...public: virtual CString GetObjID(void) { return _T("B"); }};
[解决办法]
你是具体对象的转换,AB已经被转换成X,所以typeid的结果也是X
可以设置个变量来区别类型,当AB被转换成X时,调用X的拷贝构造,
自定义拷贝构造,获取该变量的值,保存到新对象中.
class X{public: X(){ m_nFlag = 0; } X(const X& xx) { m_nFlag = xx.m_nFlag;} int m_nFlag;};class A: public X{public: A(){ m_nFlag = 1;}};class B: public X{public: B(){ m_nFlag = 2;}};