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