特定のクラス (B) が常に 2 番目のクラス (D) に派生することがわかっているクラス階層があります。this
B のコンストラクターでは、構築全体が完了する前に誰も使用しようとしないことが確実な場合、ポインターを 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
{};
このコードは安全ですか?