#ifndef _TOYPTR_H_ #define _TOYPTR_H_ template class ToyPtr { public: // Constructor that accepts the ptr. ToyPtr(T *ptr) : ptr_(ptr) { } // Destructor that deletes the ptr. ~ToyPtr() { if (ptr_ != nullptr) { // reminder: nullptr is C++11 delete ptr_; ptr_ = nullptr; } } // Implement the "*" operator T &operator*() { return *ptr_; } // Implement the "->" operator T *operator->() { return ptr_; } private: // The pointer itself. T *ptr_; }; #endif // _TOYPTR_H_