基本クラスからキャストされた派生クラスを初期化するための推奨される方法は何ですか?
次のシナリオを検討してください。
class A{
public:
A();
~A();
}
class B : public A{
public:
B() {m_b = 0.0;};
~B();
float GetValue(){return m_b;};
private:
float m_b;
}
A* a = new A;
B* b = static_cast<B*>(a);
float val = b->GetValue(); // This was never initialized because it was not constructed
私の現在の解決策は、コンストラクターと同じように必要な初期化を実行する Initialize() 関数を手動で呼び出すことです。
ずさんなようですが、より良い/よりクリーンな方法が必要です。
どんな助けと指導も大歓迎です!