Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1.     template<typename T>
  2.     class HookPointer
  3.     {
  4.     public:
  5.         HookPointer() : m_obj(0), m_ptr(0) {}
  6.         HookPointer(QObject *obj) : m_obj(obj), m_ptr(qobject_cast<T*>(obj)) {}
  7.         HookPointer(const HookPointer<T> &that) : m_obj(that.m_obj), m_ptr(that.m_ptr) {}
  8.         ~HookPointer() {}
  9.        
  10.         HookPointer &operator =(const HookPointer<T> &that)
  11.         {
  12.             m_obj = that.m_obj;
  13.             m_ptr = that.m_ptr;
  14.             return *this;
  15.         }
  16.         HookPointer &operator =(QObject *obj) { return operator =(HookPointer(obj)); }
  17.        
  18.         T *operator ->() { return m_ptr; }
  19.         operator QObject *() const { return m_obj; }
  20.         operator T *() const { return m_ptr; }
  21.         operator bool() const { return m_obj != NULL; }
  22.        
  23.         inline QObject *object() const { return m_obj; }
  24.         inline T *pointer() const { return m_ptr; }
  25.     private:
  26.         QObject *m_obj;
  27.         T *m_ptr;
  28.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement