7
我讀this article和我橫跨以下定義來(在qglobal.h):在這個例子中qGetPtrHelper的用途是什麼?
template <typename T> static inline T *qGetPtrHelper(T *ptr) { return ptr; }
template <typename Wrapper> static inline typename Wrapper::pointer qGetPtrHelper(const Wrapper &p) { return p.data(); }
#define Q_DECLARE_PRIVATE(Class) \
inline Class##Private* d_func() { return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr)); } \
inline const Class##Private* d_func() const { return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr)); } \
friend class Class##Private;
據我所知,宏對於利用該d-指針/ PIMPL模式類定義常用功能。但是我不太瞭解qGetPtrHelper
功能的需求。它只是返回一個即將播放的指針副本。如果沒有這個功能,ptr
變量不能直接轉換嗎?
哦,其中有兩個,我只是省略了另一個,因爲我認爲它與問題無關(我不明白其中之一,但我想我會問另一個問題,如果我還是不要在這之後沒有得到它)。我認爲這很好地解釋它。謝謝。 –