Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
d_ptr. Или нет? Вся работа происходит исключительно через класс-обёртку? Но если так, то… Эмс. А чем это лучше чем просто некий стандартный интерфейсный набор функций, и различные реализации их в том же ELF Shared Object? Ну, или dll'ки? Где тут 'фишка'?Смысл в том что объявляется класс XXXPrivate и переменная публичного класса в защищенной секции. В отдельном заголовочном файле или в .cpp файле уже пишется объявление приватного класса
Это необходимо для того чтобы обеспечить возможность создания наследников приватного класса и использования их как приватных классов во всей иерархии
MyClass::MyClass(QObject* parent)
:QObject(parent)
,d_ptr(NULL)
{
d_ptr = new MyClassPrivate(this);
.......
}
С соответствующим конструктором MyClassPrivate.MyClass::MyClass(QObject* parent)
: QObject(parent), d_ptr(new MyClassPrivate(this))
{ ... }
...
MyClassPrivate::MyClassPrivate(MyClass* parent)
: q_ptr(parent)
{ ... } Q_D(MyClass);
d->q_ptr = this;
MyClassDerived::MyClassDerived(QObject *parent)
:MyClass(*new MyClassDerivedPrivate(), parent)
MyClassDerived::MyClassDerived(QObject *parent)
:MyClass(*new MyClassDerivedPrivate(this), parent)
Что такое Pimpl по версии Qt, и с чем его едят!