如何检查对象有效

How to check object is valid

本文关键字:对象 有效 检查 何检查      更新时间:2023-10-16

我有我的类对象,如果我在不同的位置上有此对象,当我将此对象删除并初始化为null时,我希望这个对象在所有其他位置都为null。可能吗?

#include "mainwindow.h"
#include <QApplication>
#include "QDebug"
class A {
public:
    int x;
    int y;
};
class B : public A {
public:
    B(int a, int b) {
        this->m = a;
        this->n = b;
    }
    int m;
    int n;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
B* temp = new B(1, 2);
B* b1 = temp;
B* b2 = temp;
delete temp;
temp = NULL;
qDebug() << b1->x << b2->x; //its print 421312312 -2131231231
return a.exec();
}

带有std,它会像:

auto temp = std::make_shared<B>(1, 2);
std::weak_ptr<B> w1 = temp;
std::weak_ptr<B> w2 = temp;
temp.reset();

auto b1 = w1.lock();
auto b2 = w2.lock();
if (b1 && b2) {
    qDebug() << b1->x << b2->x;
}

谢谢@nathanoliver和all。

我正在使用qsharedPointer。

    QSharedPointer<B> obj = QSharedPointer<B>(new B(1, 2));
    obj.clear();
    B* t = obj.data();
    if (t)
        qDebug() << t->m << t->n;
    else {
        qDebug() << "NULL";
    }

现在T为空。谢谢!