C/C++ゲーム製作総合スレッド Part1 at GAMEDEVC/C++ゲーム製作総合スレッド Part1 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト36:名前は開発中のものです。 12/05/23 22:24:42.87 IjYu3jeM すいません、何度か過去に若干似たような質問をしてしまったのですがまとめたので改めて質問させてください。 クラスの配列メンバを、コンストラクタで動的に初期化(インスタンス化?)することはできるでしょうか? コンストラクタに与えられた値の分だけの要素数を持った配列をメンバにしたいです。 37:名前は開発中のものです。 12/05/23 22:36:04.71 wZno0p8L 配列じゃなくてvectorをメンバに持てばいい 初期化子を使ってvectorのコンストラクタに値渡せばできる class Hoge { std::vector<int> m_array; Hoge(int num) : m_array(num){} }; つーか、vectorなら後でどうこうできるから別にこんなことしなくていんだが 38:名前は開発中のものです。 12/05/23 22:48:10.25 okQmDLbt >>36 動的に配列のメンバー変数のサイズを決める事はできないと思います。 擬似的な方法として以下ではどうでしょう? 1)テンプレートで要素数を指定する。 template<UINT n>class Hoge { DATA data[n]; }; Hoge<3> hoge3; Hoge<2> hoge2; サイズが違うと違う型扱いになる。 Hoge<3>*で&hoge2は受け取れない(逆も)。 (2)データを配列で持たずポインターで持つ。 class Hoge { explicit Hoge( UINT n ){ data = new DATA [n]; } ~Hoge(){ delete [] data; } DATA* data; }; Hoge hoge3(3); Hoge hoge2(2); Hoge*は&hoge2も&hoge3でも受け取れる。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch