我有类似这样的代码示例:
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中的方法仅用于C和D中使用B的A方法?我知道这是一个愚蠢的问题。我需要通过修改C类来使其工作,因为要开发B类和D类来支持这样的变化......
答案 0 :(得分:1)
我建议您在虚拟/多重继承上阅读此FAQ。
在C ++中,如果你有多个继承,要么它是非虚拟的,在这种情况下你会获得公共基类的多个副本,或者它是虚拟的,在这种情况下只有一个公共基类的副本。
在大多数情况下,最好避免多重继承。