作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有纯虚函数的基类,我有一个包含基类虚函数及其自身函数定义的派生类。
现在我已经将基类对象指向派生类,例如:
Base *bc =new Child();
我想使用此对象调用子类方法(未在父类中定义或声明)。
但我收到编译器错误 memeberFunction not define in Base class
。
代码如下:
class Base
{
public:
virtual void method1() = 0;
};
class child : public Base
{
public:
virtual void method1() {}
void Method2() { /* some implementation */ }
};
我怎样才能做到这一点?
bc->Method2();
最佳答案
您想要单独执行此操作表明设计选择不当。在大多数情况下,使用 dynamic_cast 也表明设计选择不当。另请注意,dynamic_cast 非常慢,比调用虚函数慢得多。顺便说一句,您可以使用 static_cast 向下转换派生树。这当然也是极其罕见的(CRTP 就是一个例子)。我也想知道,在这一点上:你怎么知道这个对象是一个“ child ”而不是其他一些 Base-Derived 对象?如果您真的知道这一点,为什么不首先与 child* 而不是 Base* 一起工作呢? (顺便看看智能指针,例如 unique_ptr。)
关于c++ - 如何让基类对象调用派生类的非虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089365/
我是一名优秀的程序员,十分优秀!