#ifndef POINTER_H #define POINTER_H #include "Object.h" namespace Kylin { template class Pointer : public Object{ public: T* get() const{ return m_pointer; } T& operator *() const{ return *m_pointer; } T* operator ->() const{ return m_pointer; } bool isNull() const{ return (m_pointer==nullptr); } virtual ~Pointer() = 0; protected: T *m_pointer = nullptr; }; template Pointer::~Pointer() { } } #endif // POINTER_H