2

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

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 编译,但在执行期间给出了不正确的内容。

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

4

1 回答 1

4

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

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

于 2012-12-20T12:40:43.170 回答