首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

两个子类转换成父类后 怎么判断其转换前的子类类型

2012-02-13 
两个子类转换成父类后 如何判断其转换前的子类类型?就是有A,B两上类的父类是X.当A或B转换成X后 如果再判断

两个子类转换成父类后 如何判断其转换前的子类类型?
就是有A,B两上类的父类是X.
当A或B转换成X后 如果再判断其转换前的类型?
用typeid得到的还是现在的父类型 有其它方法不?

[解决办法]
我再想,如果判断数据大小和哪个子类一样来粗略判断
不过这要求两个类数据大小不同阿
[解决办法]

C/C++ code
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的拷贝构造,
自定义拷贝构造,获取该变量的值,保存到新对象中.

C/C++ code
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;}}; 

热点排行