產生這種情況的場景非常複雜,所以我會去掉幾塊,並給出所涉及類的準確表示。C++多繼承問題
/* This is inherited using SI by many classes, as normal */
class IBase
{
virtual string toString()=0;
};
/* Base2 can't inherit IBase due to other methods on IBase which aren't appropriate */
class Base2
{
string toString()
{
...
}
};
/* a special class, is this valid? */
class Class1 : public IBase, public Base2
{
};
那麼,這是否有效? toString會有衝突嗎?或者Class1可以使用Base2 :: toString來滿足IBase? 就像我說的,還有很多其他的東西沒有顯示出來,所以對這個例子的主要設計變更的建議可能沒有什麼幫助,儘管任何一般的建議/建議都是值得歡迎的。
我其他的想法是這樣的:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
這將構建和鏈接,但我不知道它是否有隱藏的錯誤。