7
Iは、this articleを読んでいたと私は(qglobal.hで)次の定義に出くわした:私はマクロD-ポインタ/ PIMPLパターンを利用するクラスの一般的な機能を定義することを理解この例では、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;
。しかし、私は、qGetPtrHelper
機能の必要性を十分に把握していません。すぐにキャストされるポインタのコピーを返します。 ptr
変数はこの関数なしで直接キャストできませんでしたか?
オハイオ州には2つありますが、私はそれが問題に関連していないと思ったのでもう一方を省略しました(私はそれも理解できませんでしたが、まだドンすれば別の質問をしますこの後にそれを取得しないでください)。私はこれがうまくそれを説明すると思います。ありがとう。 –