动态类型转换?该如何处理
动态类型转换?
class OneDialog : public CDialog
{
....
}
class TwoDialog : public CDialog
{
....
}
........
// 自己创建的Dialog
OneDialog* OneDlg = new OneDialog;
CDialog* pDialog[10];
pDialog[0] = OneDlg;
pDialog[0]-> 该如何点出 OneDlg的成员变量。
因为 创建Dlg的时候是随机创建的。 所以不能固定强转哪个对话框的类型 OneDlg 有可能是 TwoDlg
有什么方案能解决呢 。? 分不多阿 求解决。。!
------解决方案--------------------
没看懂
既然可能是TwoDlg,那怎么能去访问一个OneDlg 的变量
------解决方案--------------------
if(typeid(pDialog[0])==typeid(OneDialog)
{
}else ifif(typeid(pDialog[0])==typeid(TwoDialog)
{
}
------解决方案--------------------
没太明白楼主的问题,你的onedlg,twodlg不都是派生自CDialog吗?当运行pDialog[0] = OneDlg时,会把派生类中重载的方法或成员函数切掉,此时pDialog[0]中保存的就是基类CDialog中的成员变量。
class OneDialog : public CDialog
{
....
}
class TwoDialog : public CDialog
{
....
}
........
// 自己创建的Dialog
OneDialog* OneDlg = new OneDialog;
CDialog* pDialog[10];
pDialog[0] = OneDlg;
pDialog[0]-> 该如何点出 OneDlg的成员变量。
因为 创建Dlg的时候是随机创建的。 所以不能固定强转哪个对话框的类型 OneDlg 有可能是 TwoDlg
有什么方案能解决呢 。? 分不多阿 求解决。。!
------解决方案--------------------
没看懂
既然可能是TwoDlg,那怎么能去访问一个OneDlg 的变量
------解决方案--------------------
if(typeid(pDialog[0])==typeid(OneDialog)
{
}else ifif(typeid(pDialog[0])==typeid(TwoDialog)
{
}
------解决方案--------------------
没太明白楼主的问题,你的onedlg,twodlg不都是派生自CDialog吗?当运行pDialog[0] = OneDlg时,会把派生类中重载的方法或成员函数切掉,此时pDialog[0]中保存的就是基类CDialog中的成员变量。