何かと便利で面倒くさいのでメモ.
単純にクラスの中でクラスを宣言すればいい.
面白いところは,外側のクラスで宣言されている変数(privateも)に,アクセスできるところ.
つまり,クラス内のクラスからみれば,グローバル変数のようなものであるところである.
クラスを使う利点は,変数を隠すことでもあるので,便利.
といっても,クラスの中でクラスを宣言すればいいだけで,
class cTARO{
public:
cHANAKO *g_clHANAKO;
}
メモリの確保とかは,こんな感じになる.
cTARO g_clTARO; g_clTARO.g_clHANAKO = new cHANAKO[5];
解放するのは,こんな感じになる.
delete []g_cltaro.g_clhanako
さらにこのクラス内にクラスとか構造体とか配列とかを入れている場合は,別途deleteを同様にして行えばいい.
普通の多次元配列を宣言するのと同様にする.
まず,普通の多次元配列は,
int **matrix; matrix = new int*[row]; for(int i=0;i<row;i++) matrix[i] = new int[column];
のように宣言し,解放は,
for(int i=0;i<row;i++) delete []matrix[i]; delete []matrix;
とする.
クラスの場合も同様で,
cHANAKO **g_clHANAKO;
と宣言して,さっきの例を用いると,
g_clTARO.g_clHANAKO = new cHANAKO*[2]; for(int i=0;i<2;i++) g_clTARO.g_clHANAKO[i]=new cHANAKO[5];
のような感じでメモリを確保する.
解放も同様で,
for(int i=0;i<2;i++) delete []g_clTARO.g_clHANAKO[i]; delete []g_clTARO.g_clHANAKO;
のようにするとうまくいく.