estaba leyendo this article y me encontré con la siguiente definición (en qglobal.h):¿Cuál es el uso de qGetPtrHelper en este ejemplo?
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;
entiendo que la macro define funciones comunes para las clases que utilizan el patrón/pImpl D-puntero. Sin embargo, no entiendo muy bien la necesidad de la función qGetPtrHelper
. Simplemente devuelve una copia de un puntero que se convertirá de inmediato. ¿No se pudo castear la variable ptr
directamente sin esta función?
Oh, hay dos de ellos, simplemente omití el otro porque pensé que no era relevante para la pregunta (tampoco lo entendí, pero pensé que haría otra pregunta si aún me pongo lo entiendo después de este). Creo que esto lo explica muy bien. Gracias. –