Qt static cast 转换私有类

最近看见了Qt工程中的一个写法,不是很懂什么意思

#ifndef D_SELFT
#define D_SELFT(Class) Class##Private *d = static_cast<Class##Private *>(d_ptr.data())
#endif

Q_SLOT void abc::slotCloseCameraResult()
{
    D_SELFT(abc);
        d->按键->do something();

这是d-pointer的一种用法,详情请看文档
https://wiki.qt.io/D-Pointer


Q_SLOT void abc::slotCloseCameraResult()

{

    D_SELFT(abc); // 相当于 abcPrivate *d = static_cast<abcPrivate *>(d_ptr.data());

        d->按键->do something();