我有我的类对象,如果我在不同的地方有这个对象,当我删除并初始化这个对象为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();
}
答案 0 :(得分:0)
感谢@NathanOliver和所有人。
我正在使用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为NULL。谢谢!
答案 1 :(得分:0)
使用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;
}