我有一个类层次结构,我知道给定的类(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
{};
此代码是否安全?
这就提出了一个什么样的价值类d是增加的问题,如果B *总是*一D. – JohnMcG 2009-07-28 13:42:58
B是定义一个类模板或不基于它的模板参数的成员函数。有几个这样的类模板,然后由D继承以提供依赖于模板参数的接口。 – 2009-07-29 06:54:58