以下のコードは、私が動的メモリ管理で書いたゲームのものです。ゲーム内のすべてのガジェットへのポインターを含む「all_gadgets」という静的ベクターがあります。実行時にガジェットが削除されたときに、対応するポインターを静的ベクターから削除したいと考えています。私はこれを試しました:
Gadget::~Gadget(){
int i = Gadget::all_gadgets.size();
for (std::vector<Gadget *>::iterator it = Gadget::all_gadgets.begin(); it!=all_gadgets.end(); ++it){
if ((*it)==this){
Gadget::all_gadgets.erase(it);
break;
}
}
int j = (i - Gadget::all_gadgets.size());
if(j!=1)
std::cout << j << " ooops! Gadget not deleted!!" << std::endl;
}
上記のコードでは、 j はゼロになります:(理由はありますか?
ポインターを null に設定することはできません。VC10を使用しています。