我有C类,它继承自A类和B类。 A类是否可以使用此继承访问B类函数(例如fun1())。 A和B都是独立的类,fun1()仅在B类中。
答案 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真的相互独立,最好找到不同的解决方案。