ここにシナリオがあります: バッファのサイズは、派生したクラスによって異なりますが、すべての派生クラスに対して一度バッファを割り当てる基本クラスを定義します。私はこの方法でそれを達成できる:派生クラスのctorが実行されるまで、C++基本クラスのメンバの初期化を遅延させる方法はありますか?
class derived
{
public:
derived(size_t array_size):size(array_size)
{
p_array.reset(new unsigned char[size]);
}
};
しかし、派生クラスの設計を簡素化するために、私は本当にこの行を入れたい:派生クラスで
class base
{
public:
base():size(), p_array(0){}
private:
size_t size;
boost::shared_array<unsigned char> p_array;
};
p_array.reset(new unsigned char[size]);
をベースクラスのどこかに書き込むことで、一度だけ書き込みます。 C + +のデザインパターンはそれを達成することができますか?おかげさまで
あなたはそうです、基本クラスの行をコピーし、派生クラスのドラフト中に変更しました。修正しました、ありがとうございます。 –
あなたのコードには私の質問で避けたいと思う非常に問題があります。 p_arrayは、派生クラスの値をメンバのサイズに再割り当てしたときにすでに割り当てられています。この時点から、メンバのサイズは割り当てられたバッファのサイズと同じになりません。 –
ベクターを使用できますか?この問題は解決しやすくなります – RvdK