1樓:
使用std::variant可以方便的實現執行期呼叫多個不同類物件的相同介面,無需繼承同乙個抽象類(只需已知所有可能出現的類名,編譯時使用c++17標準),不知是否滿足需求
快速示例如下
#include
#include
// std::variant std::visit#include
using
namespace
std;
class
Avoid
()};
class
Bvoid
()void
call
()};
class
Cvoid
()};
typedef
variant
Printable
;int
main
()//呼叫列表每個元素的print()介面for(
auto
&var
:list),
var);
}//呼叫B類元素獨有的call()方法,其他元素跳過for(
auto
&var
:list)}}}
2樓:
有幾種方法實,直接的虛繼承是乙個辦法,還可以才有非虛介面實現模板方式實現,也就是介面使用非虛函式,實現才有虛繼承的方式供介面呼叫。還有一種辦法是採用函式指標,也就是用乙個介面,介面通過函式指標呼叫實現的函式。
模板雖然也可以實現多型,但對你不太合適吧。
我這是參考effective c++,條款35
3樓:馮東
建立乙個介面 (pure virtual class),把 class A 中可以需要多型的部分放到新介面中,讓 class A class B, C 都 inherit/implement 新介面。
雖然我不喜歡輕易的繼承,不過提問的問題應該是個比較簡單的情況。稍作處理就行。
4樓:San Cheung
功能分離好,外部業務呼叫淺封裝,不要糾結什麼多型不多型,
實現功能第一,低耦合好維護第二,什麼什麼第三,... 總之拿某個語言特性來套具體任務排最後。
如何在不進行手術的情況下讓胃變小?
deng 那必須是漸進式的節食和卷腹運動,什麼是漸進式的節食就是在一定時間內 比如說半個月 把飯量由以前的三餐加至三餐以上,但是量在乙個月以內要實現減半,再加上捲腹運動,絕對可以實現 你要知道誰都貪吃,不光是你,那別人都做到了擁有了好身材,你為什麼不可以?只能靠自律,你不自律,談什麼都白搭 別人也餓...
人類能否在儲存自身的情況下消滅地球上的所有肉眼可見生物?
銅鼎金盾 先槓一下。人類也是生物,消滅所有生物還要儲存人類自身,這是矛盾,是不可能實現的。所以改成 所有其它 就沒這個槓了。所有 這是追求絕對,是不可能的事情。讓自己失明 這個答案嚇到我了,這代價其實最大。本著差不多就行,問題實現還是可以的。能看見的坐地打死,冷凍備吃。看不見的不用管,等看見在說。眼...
企業在實收資本為0的情況下,能否向股東借款,計入其他應付款?這樣操作是否合法,是否存在資本弱化的可能?
tigerwzh 可以。但出資是章程確定的股東義務,如果將來經營虧損,公司無能力償債,股東出資未到位的,債權人可以起訴股東在未出資範圍內承擔連帶償還責任。所以,這樣操作對股東而言,不見得是好事。 Mr.Zheng 資本弱化的目的是產生利息的稅盾效應,如果是無息借款就不構成資本弱化的條件。中國對資本弱...