クラスへのポインタを扱うvectorをCCreateForceクラスで宣言し、MyUnitクラスを格納したいです。
CCreateForce::AddUnit関数内でvectorコンテナに代入をしているのですがプログラムが強制終了してしまいます。
デバッカで追っかけたところ、 MyForce.push_back(new MyUnit(add)); vectorへの代入文で終了しているようです。
正しい使い方を教えてください。お願いします。
//////////////////////////////////////////////////////////////////////////
//
// MyUnit
//説明:味方キャラクターを定義したクラス
//親:CCharcterBase
//////////////////////////////////////////////////////////////////////////
class MyUnit : public CCharcterBase{
private:
UnitData ud;
int posx,posy;//位置情報
bool Alive;//生存フラグ
bool Belong;//味方部隊加入フラグ
public:
MyUnit();
MyUnit(int unique);
~MyUnit();
};
//////////////////////////////////////////////////////////////////////////
//
// CCreateForce
//説明:味方キャラクターの部隊情報
//親:CCharcterBase
//////////////////////////////////////////////////////////////////////////
class CCreateForce{
private:
static vector<MyUnit*> MyForce;//キャラクタのインスタンス//死亡時にインスタンスは破棄しないこと、死亡フラグを立てる
public:
static int AddUnit(CMap *cm);//新規加入ユニットを調べて追加する
int Updata();
int Draw();
CCreateForce();
CCreateForce(CMap *cm);
~CCreateForce();
};
//-----------------------------------------------------------------------------
// 名前 : AddUnit
// 引数 :
// 戻り値: 正常終了 = TRUE
// エラー = FALSE
// 説明 :vectorコンテナに現在仲間になっている味方を追加する
//-----------------------------------------------------------------------------
int CCreateForce::AddUnit(CMap *cm){
int add[5];
//新規加入者を取得
for(int i = 0;i < sizeof(add) / sizeof(add[0]);++i){
add[i] = cm->mpdef.AddUnit[i];
}
//vector配列に追加する
for(int i = 0;i < sizeof(add) / sizeof(add[0]);++i){
if(add[i] != 1000){
MyForce.push_back(new MyUnit(add[i]));/*ここでエラー発生、使い方をご指導ください*/
}
}
return 0;
}