コンストラクタでのメンバ変数が配列だったときの初期化の方法.
今回迷ったコード
#includeusing namespace std; class PartSum { public: PartSum(int* array, int count, int cond) : m_count(count) { //m_array = array とやってしまうと、arrayをいじくることにより、メンバ変数m_arrayも代わってしまうので、止めた方がいい. //今回はm_arrayを新しい領域を作ることでコピーしてしまう。でも、作るのが無駄な気がする. m_array = new int[count]; m_cond = cond; for(int i = 0; i < count; i++) { m_array[i] = array[i]; } } ~PartSum() { delete[] m_array; //動的に配列を作ったので、明示的に破棄しなくては。 } private: int* m_array; const int m_count; int m_cond; };
でも、青字で、
const int* m_array
なんていう風にしたい時、初期化の仕方がよくわからない.
2011.04.07追記
どうやらできないくさい。
vector使えばいいみたいだけど.