24 #ifndef _SMARTPOINTER_H
25 #define _SMARTPOINTER_H
39 P(
T* rawptr) :
p(rawptr) { }
40 P(
const P& ptr) :
p((
T*)ptr) { }
47 operator T*()
const {
return p; }
51 fprintf(stderr,
"Null dereference in P<?>::operator*() const \n ");
58 fprintf(stderr,
"Null dereference in P<?>::operator->() const \n ");
69 template<
class T2>
P&
cast(T2* p_) {
return operator=(dynamic_cast<T*>(p_)); }
P & cast(const P< T2 > &p_)
P & operator=(const P< T > &p_)