Justyさん、dicさん、ご返信誠にありがとうございます。
>Justyさん
親クラスのメンバと同名のメンバを子クラスで宣言しても、別のものとみなされるのですね…。
メンバ変数のオーバーライドのことなど、今までずっと勘違いをしてきたようです。
全くお恥ずかしい限りです、穴があったら顔から火を出しながら入りたいです…。
意味不明な質問で本当にすいません、
私なりに極力整理して書いたつもりですが、やはり精進不足…申し訳ないです。
とにかく経験をつんでまいりたいと思います。
さて本題の方ですが、
提示したコードは今作っているプログラムの問題の箇所を抽象的に簡単にしたもので、
実際のコードはもうちょっと複雑になっております。
実際は、GHandleはint**型で、LoadGH()内でint型の2次元配列にグラフィックを格納しております。
正面向きの絵が何枚で右向きの絵が何枚のキャラ、正面向きの絵しかないキャラなど、
キャラに応じて絵の枚数は変えられるようにしています。
なのでGhandleは、どうしてもint型のポインタ(のポインタ)にしたいと思っています。
やはり、グラフィックはグラフィックの管理専用のクラスにまとめるのがスタンダードなのでしょうか?
一番初めにプログラムの大まかな設計を考える段階では
全てのグラフィックを管理するクラスを作るという案はあったのですが、
結局、こんな問題に突き当たるとは思わず今の設計で作ることを何となく選んでしまいました。
今の設計のまま進めるのはちょっと私の技術じゃ難しいようなので、
書き換える手間はかかるかもしれませんが全てのグラフィックを管理するクラスを用いる方法に変えたいと思います。
>dicさん
わざわざコードを提示してくださり誠にありがとうございます。
しかしながら、今までの方法では私の手に負えなくなってきましたので、
ちょっと手法を変えていくことにいたしました。
せっかく提示していただいたのに申し訳ございません。
ちなみに、実際のプログラムでは、親クラスEnemyで
こんな風にグラフィックをロードしていました。
void Enemy::MakeHandle(char* NEnemyName)
{
//グラフィック領域を確保
if(GHandle==NULL)
{
char FileName[100];
GHandle=new int*[4];//右、左、正面、後ろの4方向のグラフィック
for(int i=0;i<4;i++)
{
GHandle=new int[GHNumbe[/url];//1方向につき、GHNumber枚のグラフィックを確保
for(int j=0;j<GHNumber;j++)
{
if(i!=2)//右向き以外のグラフィックをロード
{
if(i==0)//右向きのグラフィックのロード
{
sprintf(FileName,"ImageFiles\\Enemy\\%s\\%s%d_%d.bmp",NEnemyName,NEnemyName,i,j);
GHandle[j]=LoadGraph(FileName);
}
else//i==1 || i==3 正面向き、後ろ向きのグラフィックのロード
{
if(GHDirection==2)
{
sprintf(FileName,"ImageFiles\\Enemy\\%s\\%s%d_%d.bmp",NEnemyName,NEnemyName,i,j);
GHandle[j]=LoadGraph(FileName);
}
else
GHandle[j]=GHandle[0][j];
}
}
else//右向きのグラフィックをロード
{
if(GHDirection!=0)
{
int XSize,YSize;
GetGraphSize(GHandle[0][j],&XSize,&YSize);
GHandle[j]=DerivationGraph(XSize-1,0,-XSize,YSize,GHandle[0][j]);
}
else
GHandle[j]=GHandle[0][j];
}
}
}
}
}