ぼく用あれこれまとめ
メンバ変数で配列使うとき
最終更新:
bokuyo
-
view
メンバ変数で配列使うとき
class EnemyManager { int Num; int Enemy[Num]; //←ここが定数じゃないの public: EnemyManager(int x){Num = x;}; };
- これはコンパイルエラーになります。
- 配列の要素数は定数値じゃないとだめだから。
const定数
class EnemyManager { const int Num; int Enemy[Num]; public: EnemyManager():Num(4){ ; }; };
- これでもだめ。
static const定数
class EnemyManager { static const int Num = 4; int Enemy[Num]; };
- これはおっけー。
- 古いコンパイラだとstatic constの宣言時に初期化するのはできなかったりするっぽい。
enumハック
class EnemyManager { enum{Num = 4}; int Enemy[Num]; };
- これもおっけー。
じゃあインスタンス生成時に要素数を決めるには?
template<typename int Num> class EnemyManager { int Enemy[Num]; }; int main(){ EnemyManager<2> enemyManager; return 0; }
- templateを使うとインスタンス生成時に要素数を決めることができちゃいます。
template<typename T, int X, int Y> class Unco { T Array[X+Y]; };
- こういうのとかも一応コンパイル通る。