そこにあったはずのデータが壊れる
Posted: 2016年5月27日(金) 20:55
shared_ptrを使ってstd::listでオブジェクトを管理しているのですが
敵を追加したら
「初期化に成功しているのに、更新関数→描画関数の間で全てのメンバ変数が不正な値になる」現象が発生してしまいました
更新関数の1行目にブレークポイントを設定して変数の中身を見たら、
想定した通りの値に初期化されていましたが、
描画関数の方で全ての値がわけのわからない数になっていました(e-25やら#DENやらよく分からないレベルの値)
なんで更新関数を通しただけなのに全ての変数が壊れてしまうのでしょうか?
何の役にも立たないかもしれませんがクラスの定義と更新関数と描画関数のコード貼っておきます
敵を追加したら
「初期化に成功しているのに、更新関数→描画関数の間で全てのメンバ変数が不正な値になる」現象が発生してしまいました
更新関数の1行目にブレークポイントを設定して変数の中身を見たら、
想定した通りの値に初期化されていましたが、
描画関数の方で全ての値がわけのわからない数になっていました(e-25やら#DENやらよく分からないレベルの値)
なんで更新関数を通しただけなのに全ての変数が壊れてしまうのでしょうか?
何の役にも立たないかもしれませんがクラスの定義と更新関数と描画関数のコード貼っておきます
class Enemy_Ireel :public EnemyEx{
float FirstPosX;
public:
Enemy_Ireel(float x,float y):EnemyEx(x,y,0,5.0f,300,150){
this->HitArea=20;
this->FirstPosX=x;
}
~Enemy_Ireel(){
}
void Damage(int value);
void Dead();
void Move();
void Draw();
};
void Enemy_Ireel::Move(){
this->cnt++;
this->y+=this->sp;
this->x=this->FirstPosX+cos(PI2/120*this->cnt)*32;
if(this->cnt % 60==0){
Object_Manager::AddTask(new Bullet_Homing_manytimes(this->x,this->y,PI2/4,9,3,7,20,3,B_SMALL,CYAN,75));
}
if(x< 0-32 || x > 640+32 || y < 0-32 || y >480+32)this->used=false;
}
void Enemy_Ireel::Draw(){
DrawRotaGraph(this->x,this->y,1,this->a,en_ireelG[(this->cnt/10)%2],TRUE);
}