Каково использование qGetPtrHelper в этом примере?

Я читал эту статью и наткнулся на следующее определение (в qglobal.h ):

template  static inline T *qGetPtrHelper(T *ptr) { return ptr; }
template  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(qGetPtrHelper(d_ptr)); } \
    inline const Class##Private* d_func() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } \
    friend class Class##Private;

Я понимаю, что макрос определяет общие функции для классов, использующих шаблон D-указатель / pImpl. Однако я не совсем понимаю необходимость функции qGetPtrHelper . Он просто возвращает копию указателя, которая будет приведена сразу же. Невозможно преобразовать переменную ptr напрямую без этой функции?

7
задан Tamás Szelei 4 November 2011 в 21:53
поделиться