如何从派生类实例调用基类方法?

问题描述

在以下代码中,如何从类 AbsBase::trycallmebase() 的实例调用方法 Derived? (从两个班级外调用

#include <iostream>

// Abstract base class
class AbsBase {
public:
   virtual void implement_me()=0;
   virtual void trycallmebase() { std::cout << "AbsBase::trycallmebase() \n"; }
};

// Concrete class
class Derived : public AbsBase {
public:
   virtual void implement_me() { std::cout << "Derived::implement_me() \n"; }
   virtual void trycallmebase() { std::cout << "Derived::trycallmebase() \n"; }
};

int main() {
    Derived derived;
    AbsBase* absbase = &derived;
    
    // try 1 : OK
    derived.trycallmebase();

    // try 2 : OK (virtual call in action)
    absbase->trycallmebase();
    
    // try 3 : Expected to print "AbsBase::trycallmebase()"
    static_cast<AbsBase*>(&derived)->trycallmebase();
}

解决方法

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

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

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