首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >告诉编译器关于子类-polymorphism

告诉编译器关于子类-polymorphism
EN

Stack Overflow用户
提问于 2014-05-21 18:12:40
回答 1查看 35关注 0票数 0

如果我有一个baseclass基和一个子类子类,并且在子类中有一个不存在于超类中的成员函数--我如何告诉编译器它在那里?

代码语言:javascript
复制
 #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 = &sub;
   base->printFromSub(); // not possible at compile-time

   return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 18:14:24

您必须转换为派生类。

如果确定base指向派生类的对象,则可以使用static_cast

代码语言:javascript
复制
static_cast<Sub*>(base)->printFromSub();

如果您不确定,那么您将需要运行时检查。

代码语言:javascript
复制
Sub* p = dynamic_cast<Sub*>(base);
if (p) p->printFromSub();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23790804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档