【发布时间】:2009-07-28 10:02:46
【问题描述】:
我有一个类层次结构,我知道给定的类 (B) 将始终派生为第二个 (D)。在 B 的构造函数中,如果我确定在整个构造完成之前没有人会尝试使用它,将 this 指针静态转换为 D* 是否安全?就我而言,我想将对该对象的引用传递给另一个类 (A)。
struct A
{
D & d_;
A(D & d) : d_(d) {}
};
struct D; //forward declaration
struct B
{
A a;
B() : a(std::static_cast<D&>(*this)) {}
};
struct D : public B
{};
这段代码安全吗?
【问题讨论】:
-
这提出了一个问题,如果 B 总是是 D,那么 D 会添加什么值。
-
B 是类模板,根据其模板参数定义或不定义成员函数。有几个这样的类模板,然后由D继承以提供依赖于模板参数的接口。
标签: c++ inheritance static-cast