Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<class T>
- class Ref
- {
- public:
- Ref()
- {
- obj_ = NULL;
- }
- Ref(T* Obj)
- {
- obj_ = Obj;
- }
- Ref(const Ref<T> & o)
- {
- obj_ = o.obj_;
- }
- ~Ref()
- {
- delete_();
- }
- inline T* Get()
- {
- return obj_;
- }
- inline void operator =(T* Obj)
- {
- delete_();
- obj_ = Obj;
- }
- inline void operator =(const Ref<T> & o)
- {
- delete_();
- obj_ = o.obj_;
- }
- inline T* operator ->()
- {
- return obj_;
- }
- inline const T* operator ->() const
- {
- return obj_;
- }
- inline operator bool() const
- {
- return obj_ != NULL;
- }
- inline T& operator *()
- {
- return *obj_;
- }
- inline const T& operator *() const
- {
- return *obj_;
- }
- inline bool operator == (const Ref & o) const
- {
- return obj_ == o.obj_;
- }
- inline bool operator != (const Ref & o) const
- {
- return obj_ != o.obj_;
- }
- inline bool operator != (void * o) const
- {
- return obj_ != o;
- }
- inline bool operator != (int o) const
- {
- return obj_ != reinterpret_cast<void *>(o);
- }
- private:
- inline void delete_()
- {
- if(obj_)
- {
- delete obj_;
- }
- }
- T* obj_;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement