下面的代码来自我用动态内存管理编写的游戏。我有一个名为“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。