【发布时间】: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