为什么这不是更流行的习惯用法/模式?
#include <list>
class A {
int data;
static std::list<A*> glist;
public:
A():data(0) {
glist.push_back(this);
}
~A() {
glist.remove(this);
}
};
就像一个安全网。您可以从指向它的任何指针中删除
A
的实例,列表将自行管理。这是否比创建单独的容器来跟踪您的A
并在管理它们时出错会好得多?我想我从真正的基础上做了很多事情。但是我敢打赌,过去可以节省很多调试时间。 最佳答案
它不是线程安全的。有时您已经在维护对象列表了,不在乎。堆栈上的对象实际上并不需要在另一个容器中进行跟踪。它引入了可能不需要的类的新依赖关系。我敢肯定,还有很多其他原因我错过了。
如果使用shared_ptr
或boost的ptr容器,那么对象管理问题就不成问题了。