如何在多重继承中调用超类方法?

问题描述

我有一个类C,它同时继承了AiBAB无关。最好用下面的代码来解释。在main()中,我有一个变量a定义为std::unique_ptr<A>,但用C初始化。我无法更改此定义。

我的问题是,给定a这样的定义,如何正确调用BCAi中定义的函数?

#include <memory>

class A 
{ 
public: 
  void fun_a() {}
}; 
  
class B 
{ 
public: 
  void fun_b() {}
}; 

class Ai : public A
{ 
public:
    void fun_ai() {}
}; 
  
class C: public Ai,public B
{ 
public:
    void fun_c() {}
}; 
  
int main() 
{ 
    // I cannot change the following definition:
    std::unique_ptr<A> a = std::make_unique<C>();
    
    a->fun_a();
    //a->fun_b(); // How ?
    //a->fun_c(); // How ?
    //a->fun_ai(); // How ?
    
    return 0; 
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)