Доброго дня!Собственно сабж по теме..Я тут принялся исходники QAbstractSocket изучать для того, чтобы на его основе написать свой класс для работы с последовательным устройством и я запнулся на преобразованиях типа d_func() , d, q и т.п... В принципе я понял суть d и q (поверхностно), а вот с d_func() ума не приложу как разбираться... т.е я уже запутался...Меня интересует вопрос, почему тролли в классе QAbstractSocketEngine во многих функциях (см. qabstractsocketengine.cpp) используют так:Код:...QAbstractSocket::SocketState QAbstractSocketEngine::state() const{ return d_func()->socketState;}void QAbstractSocketEngine::setState(QAbstrac tSocket::SocketState state){ d_func()->socketState = state;}...Вопрос: почему они не делают через d !!!??? например типа : Код:...QAbstractSocket::SocketState QAbstractSocketEngine::state() const{ Q_D(const QAbstractSocketEngine); return d->socketState;}void QAbstractSocketEngine::setState(QAbstrac tSocket::SocketState state){ Q_D(const QAbstractSocketEngine); d->socketState = state;}...И вообще: когда нужно применять d_func() а когда d ? И т.п. ?
|