Russian Qt Forum

Qt => Общие вопросы => Тема начата: developer от Июнь 19, 2009, 15:14



Название: Указатели
Отправлено: developer от Июнь 19, 2009, 15:14
Как не используя QPointer, проверить указатель QWidget"а на истинность - то-есть что он указывает на правильный объектб а не куда-то в память.


Название: Re: Указатели
Отправлено: ритт от Июнь 19, 2009, 15:37
без эксепшенов?


Название: Re: Указатели
Отправлено: Пантер от Июнь 19, 2009, 16:49
В начале  и после каждого delete зануляешь указатель.

Код
C++ (Qt)
QPushButton *button = 0;
..............................
button = new QPushButton(this);
..............................
delete button;
button = 0;
..............................
if (button)
 ..................
else
 ..................
 


Название: Re: Указатели
Отправлено: break от Июнь 20, 2009, 02:11
qobject_cast


Название: Re: Указатели
Отправлено: Alex Custov от Июнь 20, 2009, 02:31
qobject_cast

строго говоря, если компилятор не будет занулять указатели, то как qobject_cast узнает что это валидный указатель? g++ 4.3 например зануляет, и

Код
C++ (Qt)
  QWidget *g;
  qDebug("%d", g);
 

напечатает "0".

А если не занулит?


Название: Re: Указатели
Отправлено: developer от Июнь 23, 2009, 11:43
2 Константин
Цитировать
без эксепшенов?
Да без эксепшенов.
Пробовал просто занулить указатель, работает не всегда корректно, в некоторых случаях просто вылетает.


Название: Re: Указатели
Отправлено: Rcus от Июнь 23, 2009, 12:01
Да, любовь к велосипедам с квадратными колесами не имеет границ. Смысл отказываться от QPointer если он работает? Производительность? Не смешите меня или покажите пример где использование QPointer сильно сказывается на производительности.


Название: Re: Указатели
Отправлено: developer от Июнь 23, 2009, 15:48
Нда, ты все-таки прав, у меня оно все равно сходиться к использованию QPointer, даже если его не использовать, реализация напоминает QPointer.
Ок, закриваем ету тему.


Название: Re: Указатели
Отправлено: ритт от Июнь 23, 2009, 17:11
но, всё-равно, обнулять указатели после удаления - хорошая привычка :)


Название: Re: Указатели
Отправлено: kuzulis от Июнь 23, 2009, 18:12
А вот у меня возникли вопросы в тему:

1. Как правильнее делать:
Код:
    QList<TMyClass *> list
или
Код:
QList<QPointer<TMyClass>> list
?

2. Все-таки обнулять указатели - присваивая им значение 0 или NULL ? :)


Название: Re: Указатели
Отправлено: Пантер от Июнь 23, 2009, 18:43
Поищи на форуме топик 0 vs NULL. :)


Название: Re: Указатели
Отправлено: kuzulis от Июнь 23, 2009, 19:18
2 panter_dsd,

спасибо.. прочитал..

а как все-таки тогда быть с п.1 ?


Название: Re: Указатели
Отправлено: Rcus от Июнь 23, 2009, 19:24
Это всегда зависит от контекста использования, поэтому нельзя дать однозначного ответа.