Simon 's Blog
» 做笔记做笔记
Toggle navigation
Simon 's Blog
HOME
总裁介绍
coper
zongcai
what
ARCH
TAGS
navigation
!!! Qt中的d指针实现
无
2021-08-04 13:37:46
701
0
0
simon88
``` #pragma once #include "core_global.hpp" #include <QMetaType> #define METAID(CLASS) \ Q_DECLARE_METATYPE(CLASS *) \ static struct CLASS##Metaid \ { \ CLASS##Metaid() \ { \ qRegisterMetaType<CLASS *>(); \ } \ } _CLASS##metai template <typename T> static inline T *ptrHelper(T *ptr) { return ptr; } template <typename Ptr> inline auto ptrHelper(const Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); } template <typename Ptr> inline auto ptrHelper(Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); } #define DECLARE_PRIVATE(Class) \ inline Class##Private *dFunc() { return reinterpret_cast<Class##Private *>(ptrHelper(dhandle)); } \ inline const Class##Private *dFunc() const { return reinterpret_cast<const Class##Private *>(ptrHelper(dhandle)); } \ friend class Class##Private; #define DPTR(Class) Class##Private *const dd = dFunc() #define DECLARE_PUBLIC(Class) \ inline Class *qFunc() { return static_cast<Class *>(qhandle); } \ inline const Class *qFunc() const { return static_cast<const Class *>(qhandle); } \ friend class Class; #define QPTR(Class) Class *qq = static_cast<Class *>(q_ptr) #include <QScopedPointer> #include <QSharedPointer> #include <QWeakPointer> #define SCOPED_HANDLE(Class) \ QScopedPointer<Class> #define SHARED_HANDLE(Class) \ QSharedPointer<Class> #define WEAK_HANDLE(Class) \ QWeakPointer<Class> #define PV_HANDLE(Class) \ SCOPED_HANDLE(Class##Private) ```
上一篇:
PostScript语法
下一篇:
亲手编写的Mesher网格编辑器
0
赞
701 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
0
条评论
More...
<>