【问题标题】:Can I use a virtual method defined in a template class inside another method?我可以在另一个方法中使用模板类中定义的虚拟方法吗?
【发布时间】:2019-03-31 03:15:55
【问题描述】:
  • 我有一个模板类,它有两种方法,一种是虚拟的,一种是普通的。
  • 普通人称虚拟人。
  • 模板类的实现总是覆盖虚方法。
  • 问题似乎是当从模板创建一个类时...调用 get_data()...会使程序崩溃。
  • 我不得不感觉到,即使我重写了它仍然持有“nullptr”的方法,我做错了什么?
virtual M *get_map() const { return nullptr; };

int get_data() const {
    return (*get_map())[_data_owner].data;
}

【问题讨论】:

  • 如果没有minimal reproducible example,这是无法确定的。您需要访问stackoverflow.com 的help center,正确学习How to Ask 问题,然后edit 您的问题,以便它满足minimal reproducible example 的所有要求,任何其他人都可以使用它来运行以重现您的问题。如果没有更多信息,唯一可能的答案是“我可以在另一个方法中使用模板类中定义的虚拟方法吗?”会是“是的,当然”。
  • 能否添加父子代码?只需相关方法即可。
  • 在基类的构建过程中是否调用了虚方法?在基类构造完成之前,虚函数调用转到基类,忽略子类

标签: c++ templates virtual-functions


【解决方案1】:

我似乎需要在覆盖该方法时添加一个“覆盖”关键字。 即使我读到它不是必需的,但就我而言,我需要添加它以使其工作。一切都很好,很抱歉没有记录在案的帖子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多