我觉得这个问题的答案很简单,但我真的无法找到它。所以这里有云:根据对象的动态类型调用一组重载函数
假设你有以下类:
class Base;
class Child : public Base;
class Displayer
{
public:
Displayer(Base* element);
Displayer(Child* element);
}
另外,我有一个Base* object
可能指向任何类Base
的实例或类Child
的一个实例。
现在我想创建基于元素上的Displayer
通过object
指出,但是,我要挑构造的正确版本。由于我现在有它,这将做到这一点(我是一个有点模糊我的C++在这里,但我认为这最清楚的方式)
object->createDisplayer();
virtual void Base::createDisplayer()
{
new Displayer(this);
}
virtual void Child::createDisplayer()
{
new Displayer(this);
}
这工作,然而,与此问题:
Base
和Child
是应用系统的一部分,而Displayer
是GUI系统的一部分。我想独立于应用程序系统构建GUI系统,以便更换GUI。这意味着Base
和Child
不应该知道Displayer
。但是,我不知道如何在不让Application类知道GUI的情况下实现这一点。
我错过了一些非常明显的东西,还是我尝试了一些不可能的事情?
编辑:我错过了原来问题中的一部分问题。这在GUI代码中发生得相当深,提供了这一个GUI独有的功能。这意味着我希望Base
和Child
类完全不知道有关该呼叫 - 而不仅仅是隐藏呼叫的内容
我试图让标题更具表现力。我希望你同意。 – sbi 2010-05-16 21:18:36
我很喜欢这个标题,谢谢 – Jasper 2010-05-16 21:34:35