c++ - 当有多个派生类时,如何使用基类指针访问派生类的函数成员?

标签 c++ pointers inheritance polymorphism

假设我有一个基类 A 和来自 A 的三个派生类,分别称为类 xyz。现在,类 x 有一个函数成员 f,我想通过多态性从类 A 指针访问它。

我知道我还必须在类 A 中定义相应的虚函数,否则,我会得到类似 "class A has no member named f" 的错误>。但是,如果我在A中定义虚函数,我还需要在yz中定义f,否则,将引发一个错误,指出 “y 和 z 是抽象类类型”。但有时,f 就像一个仅与类 x 相关的特征函数,在类 yz< 中定义是没有意义的,虽然我可以在yz 中不给出任何内容来写它。

我的问题是上面的场景,我该怎么办?

最佳答案

据我所知,您有 3 个选择:

  1. 重新设计,因为您的对象不正确。
  2. 实现一个断言然后抛出的基本函数
  3. 测试 dynamic_cast<> 的结果 - 如果返回 null,则失败。

关于c++ - 当有多个派生类时,如何使用基类指针访问派生类的函数成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244332/

相关文章:

c++ - GotW 建议不要使用公共(public)虚函数,但是 Java 的接口(interface)呢?

c++ - 从 C++ 拦截 Fortran STOP

c - 新变量指向旧变量

c++ - 在 C++ 中,当继承一个类并覆盖一个函数时。从数组调用该重写函数时出现意外结果

c++ - 多重继承中没有匹配函数

c++ - unsigned long long vs unsigned long(可移植性的观点)

python - 如何将原始指针传递给 Boost.Python?

c - 内存指针

c++ - 使用基类对象 C++ 初始化子类?

java - 一个子类的对象可以访问另一个子类的另一个对象的 protected 字段吗?