如果我有一个baseclass基和一个子类子类,并且在子类中有一个不存在于超类中的成员函数--我如何告诉编译器它在那里?
#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;
}发布于 2014-05-21 18:14:24
您必须转换为派生类。
如果确定base指向派生类的对象,则可以使用static_cast。
static_cast<Sub*>(base)->printFromSub();如果您不确定,那么您将需要运行时检查。
Sub* p = dynamic_cast<Sub*>(base);
if (p) p->printFromSub();https://stackoverflow.com/questions/23790804
复制相似问题