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
2007-12-24 · TA获得超过111个赞
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
用强制类型转换就可以了。通用指针定义成void *
void * pActiveMenu = NULL;

pActiveMenu = (void *)&m_menua;//指向CMenuA类的对象

pActiveMenu = (void *)&m_menub;//指向CMenub类的对象

(CMenuA *)pActiveMenu->print();//当CMenuA类型的指针用

(CMenuB *)pActiveMenu->print();//当CMenuB类型的指针用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuxinling_06
2007-12-24 · TA获得超过1289个赞
知道小有建树答主
回答量:345
采纳率:100%
帮助的人:424万
展开全部
用void* pActiveMenu定义

补充:
很明显,从你的补充来看你的问题不出在pActiveMenu如何定义上面,而是出在你的程序设计上面,你缺少一个变量去保存是A菜单还是B菜单甚至是C菜单中的哪个处于活动状态.

方案1:定义一个变量,当用户激活某个菜单的时候为该变量赋合适的值.

方案2:如果你的菜单A和菜单B是初始化的时候就生成好了,并且保存在某个变量中,例如:
CMenuA my_menuA;
CMenuB my_menuB;
那么你可以通过pActiveMenu的指针和my_menuA,my_menuB进行条件对比,和哪个相同就用哪个.
如果你的菜单A和菜单B是使用过程中动态生成的,那么用方案1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式