有没有办法知道我的对象是活着的,除了在类中声明一个静态私有成员并在构造函数中递增它,在析构函数中递减它。提前致谢。
答案 0 :(得分:1)
您也可以使用shared_ptr / weak_ptr以非侵入方式使用STL对您的类进行操作。
stl::shared_ptr<YourClass> p = stl::make_shared(...); // holds a strong reference to your type
stl::weak_ptr<YourClass> wp(p);
cout << wp.use_count(); // "1"
p.reset();
cout << wp.use_count(); // "0"
答案 1 :(得分:0)
你的意思是要知道你是否至少有一个实例化的实例?静态计数器几乎是最好的方法。这就是 I 无论如何都会这样做的。 :)
答案 2 :(得分:-1)
如果有问题的代码存在于非静态方法中,那么根据定义,您的对象是“活着的” - 只要您没有做一些非正统的事情,比如从方法内部删除它。
如果你 这样做(除非你真的知道你在做什么,否则不建议这样做),然后确保你NULL
之后立即指出指针并始终确保将this
与NULL
进行比较,以检查您的对象是否“活着”。