/* pointer.h v1.0 (C) 2000 adolfo@di-mare.com */ #ifndef POINTER_H #define POINTER_H template class pointer { T *_p; // el puntero public: pointer() {}; pointer(T* p) : _p(p) {}; pointer(pointer &o) : _p(o._p) {}; pointer& operator++() { ++_p; return *this; } // ++p pointer& operator--() { --_p; return *this; } // --p pointer operator++(int) { pointer o = *this; // p++ this->operator++(); return o; } pointer operator--(int) { pointer o = *this; // p-- --(*this); return o; } pointer& operator+=(int i) { _p+=i; return *this; } pointer& operator-=(int i) { _p-=i; return *this; } pointer& operator=(pointer p) { _p = p._p; return *this; } friend int operator==(pointer, pointer); friend int operator!=(pointer, pointer); friend unsigned long operator-(pointer, pointer); T& operator*() { return *_p; } // derreferencia operator int() { return _p!=0; } }; // pointer template inline int operator==(pointer x, pointer y) { return x._p == y._p; } template inline int operator!=(pointer x, pointer y) { return !(x == y); } template inline unsigned long operator-(pointer x, pointer y) { return x._p - y._p; } #endif /* POINTER_H */ #ifndef NDEBUG void main(void) { pointer pi, pj; pi++; pj--; ++pi; --pj; pj += 3; pj -= 3; pi = pj; int k = pi; pj = &k; if ((pi==pj) || (pi!=pj)) { k = *pj; *pj = k; unsigned long n = pj - pi; n = n; } } #endif /* NDEBUG */ /* EOF: pointer.h */