[英]Derived classes derived traits
B
類具有一些方法trait1
。 類B1
和C1
具有類似的方法trait2
組。 trait2
源自trait1
。
我該如何實施? 我打算將所有這些trait
方法從主層次結構移到一些單獨的方法中。 然后根據適當的性狀得出B
, B1
和C1
。 但是后來我意識到從B
繼承B1
會有問題,因為B1
也將具有trait1
。
現在,我想我可以擁有一個類型為TraitBase
,並使用trait1
或trait2
類型的適當ctor來啟動它。 但是我不喜歡應該有一個領域,這樣我的班級會有一些特殊的行為。 可能還有其他解決方案嗎? 謝謝。
更新
我的意思是B
類具有某些功能,該功能是從B1
派生的。 C1
應該具有B1
類具有的功能。
class B
{
virtual foo1();
virtual foo2();
virtual trait_method1(); //implementation 1
virtual trait_method2(); //implementation 1
};
class B1 : public B
{
virtual foo1();
virtual foo2();
virtual trait_method1(); //implementation 2
virtual trait_method2(); //implementation 2
};
class C1 : public C
{
virtual bar1();
virtual bar2();
trait_method1(); //implementation 2
trait_method2(); //implementation 2
};
您的問題可以通過實際上繼承trait1來解決:
class trait2 : virtual public trait1{} class B : public A, virtual public trait1{} class B1 : public B, public trait2{} class C1 : public C, public trait2{}
但是,只有類trait1是無狀態的,此設計才有意義。 如果沒有,請考慮其他設計,也許是橋接模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.