アットウィキロゴ

クラス内クラスの話

   何かと便利で面倒くさいのでメモ.

  • クラス内クラス

   単純にクラスの中でクラスを宣言すればいい.
   面白いところは,外側のクラスで宣言されている変数(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;

   のようにするとうまくいく.

最終更新:2011年12月07日 23:42