以下是我班级的设置方式:
class Foo{
public:
Foo();
~Foo();
static vector<Foo*> foos;
}
Foo::Foo(){
foos.push_back(this);
}
Foo::~Foo(){}
我们假设我创建了一个像这样的对象Foo
:
int main(){
Foo *obj = new Foo();
}
如何删除此对象以及静态向量中的指针?
答案 0 :(得分:3)
将Foo::~Foo
的实施更改为
Foo::~Foo()
{
foos.erase(std::find(foos.begin(), foos.end(), this));
}
...使用std::unique_ptr
...
int main(int argc, char **argv)
{
std::unique_ptr<Foo> ptr{new Foo{}};
return 0;
}
......它会自行清理。
问题包括:
如果您对上述内容感到满意,请继续并扣动扳机!