繁体   English   中英

C ++:使用析构函数在指针的静态向量中删除对象?

[英]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;
}

...它会自行清理。

问题包括:

  • 不是线程安全的。
  • per deletion for instances. 对于实例,每次删除的最坏情况时间为
  • 邪恶的全球状态!

如果您对上述方法都没问题,请继续扳动扳机!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM