【发布时间】:2012-12-07 23:33:50
【问题描述】:
我正在尝试使用其构造函数创建嵌套类的构造函数,该构造函数继承自父嵌套类。基本上:
DerivedList<T>::DerivedNested::DerivedNested(DerivedNode*& ptr)
: BaseList<T>::BaseNested::BaseNested(ptr)
{}
我的 BaseNested 的构造函数原型是这样的:
BaseList<T>::BaseNested::BaseNested(BaseNode*& ptr)
(并且需要通过引用获取ptr参数,因为它需要在其代码中的所述指针的地址)
我想我必须将我的 DerivedNode* 转换为 BaseNode*,但是: static_cast::BaseNode*>(ptr) 找不到匹配的函数,因为它不是引用,并且 static_cast::BaseNode*&> (ptr) 给出了无效的转换错误。
dynamic_cast 也是如此。 reinterpret_cast 编译,但在执行期间给出了不正确的东西。
有谁知道我如何调用父构造函数?
【问题讨论】:
-
不可能有两个引用,一个
DerivedNode*&类型和另一个BaseNode*&类型引用同一个指针。指针指向指针和指针引用不能与多态性一起很好地工作。如果您想要多态行为,请避免这些事情。
标签: c++ pointers pass-by-reference