我有类似这样的代码示例:
class A
{
public:
bool ComputeSomething(double &x, double y);
...
};
class B: public A{...}
class C: public A{...}
class D: public B, public C
{
bool FindSomething(const A& a);
...
}
我的问题是,在D类中,函数FindSomethng不知道A是来自B还是C。有没有办法在 C 中阻止 A,以便 C 中的方法只在 C 中使用,而在 D 中从 B 中使用 A 的方法?我知道这是一个愚蠢的问题。我需要通过修改 C 类来使其工作,因为 B 类和 D 类的开发是为了支持此类更改......
我建议您阅读有关虚拟/多重继承的常见问题解答。
在C++中,如果您有多重继承,则它是非虚拟的(在这种情况下您将获得公共基类的多个副本(,或者它是虚拟的,在这种情况下,只有一个公共基类的副本。
在大多数情况下,最好避免多重继承。