我正在尝试使用其构造函数创建嵌套类的构造函数,该类从父嵌套类继承。基本上是:
DerivedList<T>::DerivedNested::DerivedNested(DerivedNode*& ptr)
: BaseList<T>::BaseNested::BaseNested(ptr)
{}
我的BaseNested构造函数的原型是这样的:
BaseList<T>::BaseNested::BaseNested(BaseNode*& ptr)
(并且需要通过引用获取ptr参数,因为它需要代码中所述指针的地址)
我想我必须将DerivedNode *转换为BaseNode *,但是:static_cast :: BaseNode *&gt;(ptr)找不到匹配的函数,因为它不是引用,还有static_cast :: BaseNode *&amp; ;&gt;(ptr)给出了无效的强制转换错误。
dynamic_cast也是如此。 reinterpret_cast会编译,但在执行期间会出现错误。
有谁知道如何调用该父构造函数?
答案 0 :(得分:4)
如果您认为需要引用,那可能是因为您想稍后修改指针。问题是派生类中的指针类型是DerivedNode*
,而基类中的BaseNode*
。如果基类影响DerivedNode2*
指针会怎么样?
您应该使用setter,或将逻辑从基类移动到派生类。