C++中多个类共用一个指针的问题 15
程序中有两个类CMenuA和CMenuB,并用这两个类定义了若干个对象,这些对象中有一个活动对象,我用一个全局指针pActiveMenu表示,问题是这个活动对象有可能属于...
程序中有两个类CMenuA和CMenuB,并用这两个类定义了若干个对象,这些对象中有一个活动对象,我用一个全局指针pActiveMenu表示,问题是这个活动对象有可能属于CMenuA,也有可能是CMenuB,我该如何来定义pActiveMenu呢?
我的目的就是要取得程序中当前活动对象的指针,不知各位还有什么更好的办法,请赐教啊!
qiaochengqiang:
你说的这种方法:
(CMenuA *)pActiveMenu->print();//当CMenuA类型的指针用
(CMenuB *)pActiveMenu->print();//当CMenuB类型的指针用
可是当我要使用print()时,我不知道pActiveMenu指向的是哪个类的对象,所以只能用
pActiveMenu->print();
没办法加强制转换啊,怎么办? 展开
我的目的就是要取得程序中当前活动对象的指针,不知各位还有什么更好的办法,请赐教啊!
qiaochengqiang:
你说的这种方法:
(CMenuA *)pActiveMenu->print();//当CMenuA类型的指针用
(CMenuB *)pActiveMenu->print();//当CMenuB类型的指针用
可是当我要使用print()时,我不知道pActiveMenu指向的是哪个类的对象,所以只能用
pActiveMenu->print();
没办法加强制转换啊,怎么办? 展开
2个回答
展开全部
用强制类型转换就可以了。通用指针定义成void *
void * pActiveMenu = NULL;
pActiveMenu = (void *)&m_menua;//指向CMenuA类的对象
pActiveMenu = (void *)&m_menub;//指向CMenub类的对象
(CMenuA *)pActiveMenu->print();//当CMenuA类型的指针用
(CMenuB *)pActiveMenu->print();//当CMenuB类型的指针用
void * pActiveMenu = NULL;
pActiveMenu = (void *)&m_menua;//指向CMenuA类的对象
pActiveMenu = (void *)&m_menub;//指向CMenub类的对象
(CMenuA *)pActiveMenu->print();//当CMenuA类型的指针用
(CMenuB *)pActiveMenu->print();//当CMenuB类型的指针用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用void* pActiveMenu定义
补充:
很明显,从你的补充来看你的问题不出在pActiveMenu如何定义上面,而是出在你的程序设计上面,你缺少一个变量去保存是A菜单还是B菜单甚至是C菜单中的哪个处于活动状态.
方案1:定义一个变量,当用户激活某个菜单的时候为该变量赋合适的值.
方案2:如果你的菜单A和菜单B是初始化的时候就生成好了,并且保存在某个变量中,例如:
CMenuA my_menuA;
CMenuB my_menuB;
那么你可以通过pActiveMenu的指针和my_menuA,my_menuB进行条件对比,和哪个相同就用哪个.
如果你的菜单A和菜单B是使用过程中动态生成的,那么用方案1
补充:
很明显,从你的补充来看你的问题不出在pActiveMenu如何定义上面,而是出在你的程序设计上面,你缺少一个变量去保存是A菜单还是B菜单甚至是C菜单中的哪个处于活动状态.
方案1:定义一个变量,当用户激活某个菜单的时候为该变量赋合适的值.
方案2:如果你的菜单A和菜单B是初始化的时候就生成好了,并且保存在某个变量中,例如:
CMenuA my_menuA;
CMenuB my_menuB;
那么你可以通过pActiveMenu的指针和my_menuA,my_menuB进行条件对比,和哪个相同就用哪个.
如果你的菜单A和菜单B是使用过程中动态生成的,那么用方案1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询