Russian Qt Forum

Qt => Общие вопросы => Тема начата: Akon от Январь 09, 2014, 20:12



Название: QObject::connect/disconnect асимметричность
Отправлено: Akon от Январь 09, 2014, 20:12
Друзья, в Qt4 connect() константный, а disconnect() - нет.
Код:
bool	connect ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) const
bool disconnect ( const char * signal = 0, const QObject * receiver = 0, const char * method = 0 )
По ходу, это просто косяк (и почему он так долго не фиксится?), поскольку соответствующие статические методы оперируют с константными указателями. Т.е. disconnect() должен быть константным.

Ну а мне это ломает строгость кода :(


Название: Re: QObject::connect/disconnect асимметричность
Отправлено: Old от Январь 09, 2014, 20:34
Каким образом ломает? Ведь это обертки над статическими методами connect/disconnect - пользуйтесь ими. :)




Название: Re: QObject::connect/disconnect асимметричность
Отправлено: gil9red от Январь 09, 2014, 20:39
В Qt 5 немного изменили прототипы :)
http://code.woboq.org/qt5/qtbase/src/corelib/kernel/qobject.h.html


Название: Re: QObject::connect/disconnect асимметричность
Отправлено: Akon от Январь 09, 2014, 21:32
Цитировать
Каким образом ломает? Ведь это обертки над статическими методами connect/disconnect - пользуйтесь ими.
Обертка над disconnect() убирает константность. У меня есть модули, которые везде используют нестатические методы. Соответственно (для единообразия), все они должны быть заменены на статические.

Мне необходимо обсервить конст. объект, но я не могу использовать нестатический disconnect(), т.к. он неконст.


Название: Re: QObject::connect/disconnect асимметричность
Отправлено: Old от Январь 09, 2014, 21:38
Соответственно (для единообразия), все они должны быть заменены на статические.
По другому скорее всего не получиться. Я не разбирался почему disconnect не константный, но при добавлении const поломается вся бинарная совместимость. Скорее всего из-за этого ничего менять не будут, тем более уже пятерка в ходу, а там все поправлено.