オライリーのゲーム3D数学を購入
- 作者: Fletcher Dunn,Ian Parberry,松田晃一
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/04
- メディア: 大型本
- 購入: 21人 クリック: 141回
- この商品を含むブログ (41件) を見る
色々迷ったんですが、これに決めました。少しずつ読んでいきます。
でも最近ちょっと・・・。ま、やれるだけのことはやりたいですね。
可変長配列メンバ
ロベールのC++入門講座 16-14
クラスのメンバ変数の配列の要素数を可変長にするテクニックの話です。
まず配列の要素を一つだけで宣言しておきます。
class CSample { public: int m_int; char m_char[1]; };
そしてこのクラスを定義する際に、クラスのサイズよりも大きなサイズを確保します。
CSample* obj = reinterpret_cast<CSample*>(new char[sizeof(CSample)+10]);
クラスのサイズよりも10大きなサイズを確保することで、m_charのサイズを動的に変更できます。
このとき、newで確保するのは1バイトが保障されているcharで行い、reinterpret_castにて目的のクラスへとキャスト変換します。
またこのやり方で確保したオブジェクトを解放する場合、ちゃんとchar型に戻してから行う必要があります。
delete reinterpret_cast<char*>(obj);
なかなか面白いですね。あまり頻繁に使うことはなさそうですが、覚えておいて損はないとおもいます。