0
我有一個類C,它是在類Base,A和B的菱形中。有一個方法,Base :: foo(),它在類A和類B.當我調用C :: foo()時,我想調用B :: foo(),而不是A :: foo()。聲明只有一個類公共虛擬
一個解決方案聲稱,這樣做的方法是讓A實際上從Base繼承,並且B正常繼承。這樣,我可以實現這一點,而不必重新實現C :: foo()。
但是,我還沒有發現任何其他信息是否可能,因爲看起來A和B都需要聲明爲虛擬以避免創建兩個Base副本。
建議的解決方案是否正確?
什麼是鑽石?它是衍生的還是鑽石? – nurakantech
您是否嘗試過建議的解決方案?它工作嗎? –
這實際上是Effective C++書籍IIRC中的一個項目。 –