我覺得這個問題的答案很簡單,但我真的無法找到它。所以這裏有雲:根據對象的動態類型調用一組重載函數
假設你有以下類:
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