C ++在函数参数中转换指向基类指针的引用

时间:2012-12-20 12:33:13

标签: c++ pointers pass-by-reference

我正在尝试使用其构造函数创建嵌套类的构造函数,该类从父嵌套类继承。基本上是:

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会编译,但在执行期间会出现错误。

有谁知道如何调用该父构造函数?

1 个答案:

答案 0 :(得分:4)

如果您认为需要引用,那可能是因为您想稍后修改指针。问题是派生类中的指针类型是DerivedNode*,而基类中的BaseNode*。如果基类影响DerivedNode2*指针会怎么样?

您应该使用setter,或将逻辑从基类移动到派生类。