美文网首页
QT二进制兼容利器:D-Pointer

QT二进制兼容利器:D-Pointer

作者: 上官宏竹 | 来源:发表于2021-05-26 14:45 被阅读0次

d-pointer 指向私有类的指针

d-pointer指针指向一个包含所有数据的私有的(内部的)数据结构,通常都命名为XXXPrivate的类,每个对外公开的类都维护自己的一个 d-pointer。

class Widget {
  Rect geometry() const;
private:
  // d-pointer never referenced in header file.
  // Since WidgetPrivate is not defined in this header,
  // any access will be a compile error
  WidgetPrivate d_ptr;
};

q-pointer 指向公有类的指针

有些时候,私有类XXXPrivate需要访问公有类XXX的一些接口,此时给私有类保留一个指向公有类的指针q-pointer来实现。

/ widget_p.h */ (_p意味着私有)
struct WidgetPrivate {
  // constructor that initializes the q-ptr
  WidgetPrivate(Widget *q) : q_ptr(q) { }
  Widget q_ptr; // q-ptr that points to the API class
  Rect geometry;
  String stylesheet;
};

D-Pointer/zh

相关文章

网友评论

      本文标题:QT二进制兼容利器:D-Pointer

      本文链接:https://www.haomeiwen.com/subject/jgrukltx.html