#ifndef _SMTP_SMARTPOINTEREX_HPP_ #define _SMTP_SMARTPOINTEREX_HPP_ #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif template class SmartPointerEx : public SmartPointer { public: SmartPointerEx(void); SmartPointerEx(T FAR *lpSmartPointer,PointerDisposition::Disposition disposition=PointerDisposition::Assume); SmartPointerEx(const SmartPointer &someSmartPointer); virtual ~SmartPointerEx(); int operator < (const SmartPointerEx &someSmartPointerEx)const; private: }; template inline SmartPointerEx::SmartPointerEx(void) { } template inline SmartPointerEx::SmartPointerEx(T *lpSmartPointer,PointerDisposition::Disposition disposition) : SmartPointer(lpSmartPointer,disposition) { } template inline SmartPointerEx::SmartPointerEx(const SmartPointer &someSmartPointer) { (SmartPointer&)*this=someSmartPointer; } template inline SmartPointerEx::~SmartPointerEx() { } template inline int SmartPointerEx::operator <(const SmartPointerEx &someSmartPointerEx)const { return *((T FAR*)((SmartPointer&)*this))<*((T FAR*)((SmartPointer&)someSmartPointerEx)); } #endif