多重继承。如何访问1父类的成员函数到另一个父类

时间:2012-04-25 06:38:29

标签: c++ visual-c++

我有C类,它继承自A类和B类。 A类是否可以使用此继承访问B类函数(例如fun1())。 A和B都是独立的类,fun1()仅在B类中。

3 个答案:

答案 0 :(得分:1)

不严格通过继承。虽然A和B是C的父母,但A和B没有任何关系,也没有办法互相访问。

有可能通过继承和polimorphism,然后类A有一个虚拟方法,C实现调用B中的函数,如下所示:

class A {
public:
  b get_b() { return do_get_b(); }
private:
  virtual do_get_b() = 0;
};

class B {
public:
  b some_b;
};   

class C : public A, public B {
private:
  virtual do_get_b() {return some_b;}
}

答案 1 :(得分:0)

有时,这是可能的。 An example how to achieve this.

该示例适用于钻石层次结构,这比您的更复杂。按照您的意思,ClassA和ClassB应该从类Base派生,ClassC派生自ClassA和ClassB。

答案 2 :(得分:0)

您可以使用dynamic_cast查看您的A对象是否真的是C的对象,从而是B的对象

void A::foo()
{
    B* pB = dynamic_cast<B*>(this);
    if (pB) pB->bar();
}

但如果A和B真的相互独立,最好找到不同的解决方案。