Russian Qt Forum

Qt => Вопросы новичков => Тема начата: QwerTech от Июль 25, 2012, 12:49



Название: Проверка что объект создан
Отправлено: QwerTech от Июль 25, 2012, 12:49
Как проверить что объект создан?

Вот пример:
Код:
    
    QObject *gisMaker = new QObject();
    delete gisMaker;
    if(gisMaker == 0)
    {
        QMessageBox msg;
        msg.setText("Объект удален");
        msg.show();
    }

Только он не работает. По какому условию можно проверить что объект создан?


Название: Re: Проверка что объект создан
Отправлено: Bepec от Июль 25, 2012, 12:53
Никак :)

Точнее вызвать какой нить его метод и с шансом 50% смотреть как он передаёт мусор, или же валит программу, или же грызёт память и прочая.

PS как решение - обнулять указатель после удаления.


Название: Re: Проверка что объект создан
Отправлено: kambala от Июль 25, 2012, 13:00
хранить указатели в QPointer


Название: Re: Проверка что объект создан
Отправлено: ecspertiza от Июль 25, 2012, 13:02
Код:
    
    QObject *gisMaker = new QObject();
    delete gisMaker;
    if(gisMaker == 0)
    {
        QMessageBox msg;
        msg.setText("Объект удален");
        msg.show();
    }

не будет работать, так как ты объект удалил ,а указатель не обнулил, вот у тебя условие и не выполняется.


Название: Re: Проверка что объект создан
Отправлено: mutineer от Июль 25, 2012, 13:05
Если наследник QObject, то использовать QPointer
Если нет, то обнулять указатель после удаления объекта


Название: Re: Проверка что объект создан
Отправлено: QwerTech от Июль 25, 2012, 13:59
Благодарю, решение с обнулением указателя то что нужно.