如果我有一個代理模式類A
,並且代理類是PrxA
。 問題1C++代理模式中的虛函數
如果我定義一些功能,如A
virtual
是那些應該被定義爲virtual
即使在PrxA
?
現在,如果
Class B : public A
{
///code
}
我相信代理類也應該繼承。
Class PrxB : public PrxA {
/// code
}
現在假設這些代理類有以下規則
- 實例化的原班在c'tor
- 將圍繞內部傳遞任何引用/的指針param傳遞跨越不同的內部類
- 要獲得代理類的實際impl(即從
PrxA
得到A
,我們有一個impl商店,它將給我們A
從PrxA
和B
從PrxB
。
現在有一個C
類,其中以PrxA作爲參考的c'tor。
`C :: C(PRXA & A):PA(A)中,(getImpl(PRXA)),這些被初始化的C類的
本地成員。
PrxA& pa;
A& a;
如果我通過A它會工作得很好。這裏沒問題。
問題2 當我通過B
這一類C
什麼是獲得B
的IMPL(第二次在C'S c'tor初始化的最好方法是什麼?(請注意B
從A
派生)
我能想到的鑄造在getImpl(A)
這樣的事情,但看起來並不像一個很好的SOLN。
A* getAImpl(PrxA& pa)
{
if (implA(pa) != NULL)
return A;
else
return dynamic_cast<B>(A); // can't do this. since A will be returned but I actually need B
}
什麼辦法,我應該在這裏拍攝,如果我需要通過PrxB
到類,如C
是以PrxA爲參考?有沒有辦法比鑄造。
此外,如果我們限制在一個構造這裏有趣的事情,我們可以得到PRXA或PrxB的引用這需要進行相應的處理,以獲得在初始化的IMPL。我需要知道一個好方法。
爲什麼你在帖子末尾添加了15個空行?你爲什麼不使用預覽功能? –
格式問題。我糾正了它。對於那個很抱歉。 – leonidus
我認爲(如果我正確解釋)你在這裏有一個非常有趣的問題,但很難解釋。也許你可以重新組織一下? – Owen