[英]C++: Deleting an Object in a static vector of pointers with the destructor?
這是我的班級設置方法:
class Foo{
public:
Foo();
~Foo();
static vector<Foo*> foos;
}
Foo::Foo(){
foos.push_back(this);
}
Foo::~Foo(){}
假設我像這樣創建了一個Object Foo
:
int main(){
Foo *obj = new Foo();
}
我將如何刪除該對象以及靜態向量中的指針?
將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;
}
...它會自行清理。
問題包括:
如果您對上述方法都沒問題,請繼續扳動扳機!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.