如果我有一个baseclass Base和一个子类Sub,并且在子类中有一个不存在于超类中的成员函数 - 我该如何告诉编译器呢?
#include <iostream>
using namespace std;
class Base {
public:
};
class Sub : public Base {
public:
void printFromSub() {
cout << "I am not inherited ;-)" << endl;
}
};
int main() {
Sub sub;
Base* base;
base = ⊂
base->printFromSub(); // not possible at compile-time
return 0;
}
答案 0 :(得分:2)
你必须转换为派生类。
如果您确定base
指向派生类的对象,则可以使用static_cast
。
static_cast<Sub*>(base)->printFromSub();
如果您不确定,那么您需要进行运行时检查。
Sub* p = dynamic_cast<Sub*>(base);
if (p) p->printFromSub();