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

Help:设计有关问题

2012-04-11 
Help:设计问题我的问题是这样的:我现在有3个对话框,都是从CDialog派生来的。这3个对话框会在另外的同一个类

Help:设计问题
我的问题是这样的:
我现在有3个对话框,都是从CDialog派生来的。
这3个对话框会在另外的同一个类中使用,但是每次只有一个会被使用。
这3个对话框应该如何包含在类中呢而被这个类使用呢?
我被这个问题难住了,不知道该如何做。
我想了3中办法:
1.在类中定义三个指针,分别代表三个对话框,但是感觉很笨。因为毕竟每次只有一个会被使用,这样总会有两个浪费。
2.定义一个CDialog的指针,然后每次根据判断看是那个对话框在使用,把基类指针强制转化为对话框的派生类指针,这样也可以实现相应对话框的访问。但是感觉也不好,毕竟指针的强制转化不是什么好事,在这样的情况下。
3.用联合,把三个对话框的指针放在同一个联合中,类中定义一个联合的变量即可。感觉这种方法也可以接受,但是觉得很别扭。
所以特来请教高手,多谢1!!!!!


[解决办法]
我会有这样的备选方案:

class CMyDialog : public CDialog {
public:
// 这里提取3个具体类的公共接口
bool foo();
};

class CDlgAAA : public CMyDialog {};
class CDlgBBB : public CMyDialog {};
class CDlgCCC : public CMyDialog {};

客户端程序操纵CMyDialog的指针或引用:

void execute(CMyDialog const & dialog) {
dialog.foo();
}

main之类的方法内产生具体类.

热点排行