Sorry for the silly naming */
template <class T>
class P {
-
- void copy(T*);
+ /**
+ Set contents to a copy of #t_l#
+ */
+ void copy(T const*t_l);
T* t_p;
+
+ /**
+ junk contents and set to 0
+ */
void junk();
public:
P(P const &src);
+ /**
+ Remove the pointer, and return it.
+ */
T *get_p() { T*p = t_p; t_p=0; return p; }
- T *get_l() { return t_p; }
+ /**
+ return the pointer
+ */
+ T *get_l() { return t_p; }
+
+ T const *get_C() const { return t_p; }
+ /**
+ copy the contents of pointer, and return it
+ */
T *copy_p() const;
+ /**
+ swallow new_p, and set contents t new_p
+ */
void set_p (T *new_p);
- void set_l (T *t_l);
+ /**
+ junk contents, and copy contents of t_l
+ */
+ void set_l (T const *t_C);
P &operator =(P const &);
~P();
T *operator ->() { return t_p; }
operator T * () { return t_p; }
const T *operator ->() const { return t_p ; }
+ T &operator *() { return *t_p; }
+ T const &operator *() const { return *t_p; }
operator const T *() const { return t_p; }
};
#endif // POINTER_HH