QObject *obj;
...
if (/* obj is already instantiated */) {
;
} else {
obj = new QObject();
}
Meine Frage ist die Bedingung der wennQt Objektinstanziierung Abfrage
QObject *obj;
...
if (/* obj is already instantiated */) {
;
} else {
obj = new QObject();
}
Meine Frage ist die Bedingung der wennQt Objektinstanziierung Abfrage
1) Initialisieren Ihre Objektzeiger
2) Überprüfen Sie für NULL in Ihrer if
Anweisung
QObject *obj = NULL;
...
if (obj != NULL) {
;
} else {
obj = new QObject();
}
auf NULL
QObject *obj = 0;
// ...
if (!obj) obj = new QObject();
Hinweis: Keine Garantie obj
ist kein dangling pointer.
Verwenden Sie QPointer
Klasse. http://qt-project.org/doc/qt-4.8/qpointer.html#data
Immer wenn Sie deleteLater();
aufrufen, wird es auf 0 gesetzt, als Sie es überprüfen können.
QPointer<QWidget> someWidget = 0;
Eigentlich NULL ist ein C-ism. Für einen modernen Compiler verwenden Sie stattdessen nullptr. –
Ich denke, Qt verworfen NULL. Und bitten Sie, statt dessen 0 zu verwenden. Aber ** ISO verbietet die Initialisierung von Mitgliedern ** wie ein Fehler, den ich bekomme, wenn ich ** QObject * obj = 0; ** – Dewsworld
verwende Wenn 'obj' eine Membervariable ist, sollte sie auf 0/NULL/nullptr initialisiert werden Wählen Sie) innerhalb des Konstruktors Ihrer Klasse, vorzugsweise in der Initialisierungsliste. – Chris