c++ - 有什么区别:派生类构造函数是否通过使用取消引用调用抽象类构造函数进行初始化?
问题描述
我有一个抽象(模板)类tXmlNode
,我从中派生了模板类tXmlGeometry
。该派生类应使用指向不同类型对象的指针构造,因此它被创建为模板。该对象应通过指针传递给派生类。
我当前对派生类的构造函数的实现如下(我省略了范围实现,因为它与我认为的问题无关):
nXml::tXmlGeometry<Part>::tXmlGeometry(Part* part) : tXmlNode<Part>(part)
我的编译器(MS VisualStudio 2019)接受这个。但它也承认:
nXml::tXmlGeometry<Part>::tXmlGeometry(Part* part) : tXmlNode<Part>(*part)
这里的确切区别是什么?据我了解,第二个调用抽象类的构造函数并将其内容传输part
到该tXmlNode
构造函数,而第一个做什么?
现在我正在创建一个tXmlSegment
继承自tXmlGeometry
.
这个新抽象类的构造函数公式如下:
nXml::tXmlSegment2D::tXmlSegment2D(tXmlGeometry<Part>* geo, const int npos) : tXmlGeometry<Part>(*geo), position(npos)
奇怪的是,我的编译器现在坚持要获取取消引用的geo
对象,我不明白这样做的原因。为什么我必须取消引用它?
编辑: tXmlNode 的构造函数如下:
template<class Node>
inline tXmlNode<Node>::tXmlNode(
Node* node,
const int npos) : xml_doc(nullptr), node(node), n_childs(0), n_attr(0), position(npos)
解决方案
推荐阅读
- java - 使用 iText7 和 pdfHtml 插件时无法检索字体错误
- c# - ASP.Net Core 自托管中的 SignalR
- javascript - 当复选框被选中时无法获取反对该复选框的数据
- c# - asp.net 核心自定义属性从过滤器获取对象
- c++ - C++:常量引用参数
- vba - 生成目录时在 MS Word 中更改文档时功能失败
- gremlin - Tinkerpop Gremlin 按键分组并获取最新信息
- video-processing - 如何在视频上叠加图像
- python - 如何使用 imap-tools 移动电子邮件
- ruby-on-rails - ActiveRecord::NotNullViolation (SQLite3::ConstraintException: NOT NULL 约束失败: