#ifndef _TOYPTR_H_

#define _TOYPTR_H_



template <typename T> class ToyPtr {

 public:

  // Constructor that accepts the ptr.

  ToyPtr(T *ptr) : ptr_(ptr) { }



  // Destructor that deletes the ptr.

  ~ToyPtr() {

      delete ptr_;

  }



  // Implement the "*" operator

  T &operator*() {

    return *ptr_;

  }



  // Implement the "->" operator

  T *operator->() {

    return ptr_;

  }



 private:

  // The pointer itself.

  T *ptr_;

};



#endif  // _TOYPTR_H_