产生这种情况的场景非常复杂,所以我会去掉几块,并给出所涉及类的准确表示。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();
}
};
这将构建和链接,但我不知道它是否有隐藏的错误。