僕の今書いているシューティングプログラムは動的にメモリを確保することをコンセプトに書いています。
例えば自機のショットであれば
class CHARACTER_SHOT{
private:
int BULLET_MAX;
BULLET_BASS* bullet;
double x;
double y;
double r;
double ang;
double bass_ang;
double spd;
double ExRate;
int knd;
int col;
public:
//------------------------------------
//BULLET_MAX個の弾を作ります
//------------------------------------
/**/ CH_SHOT::CH_SHOT( int BULLET_MAX , double x , double y , double r , double ang ,
double spd , int knd , int col , double ExRate )
{
this->BULLET_MAX = BULLET_MAX;
bullet = new BULLET_BASS[BULLET_MAX];
//----------------------------------------------------------
//弾の当たり範囲、角度、速度、種類、色などはここで定義
//----------------------------------------------------------
this->r = r;
this->ang = ang;
this->bass_ang = ang;
this->spd = spd;
this->knd = knd;
this->col = col;
this->ExRate = ExRate;
}
デリートで躓きました、
キャラクターショットクラスのデストラクタで とするとエラーが出ます。
僕がやりたかったのはキャラクターショットオブジェクトのデストラクタを呼ぶと同時に
弾オブジェクトのデストラクタも呼ぶということだったのですがどうも上手くいかない。
キャラクターオブジェクトのデストラクタを呼ぶ前に
ch_shot->DeleteObject();
というような関数を作ってこの中で弾オブジェクトだけを破棄します。
これで弾オブジェクトを破棄した後にキャラクターショットオブジェクトを破棄する、
としますとエラーは不思議となくなりました。
呼び出す順番に問題があったのだろうか??
と思いながらも、これも一つの学習だと思いつつ
これからはこの辺に気をつけてみましょう