Re: Problem about overload operator ++
On 10=D4 5=C8=D5, =CF =CE=E73=CA=B137=B7=D6, Obnoxious User <O...@127.0=
..0.1> wrote:
On Sat, 04 Oct 2008 18:29:54 -0700, Hill wrote:
This is a program just for testing operator overloading. But I found th=
e
operator ++ doesn't act like on built-in types. For detail: When
int array[10];
Ptr_to_T<int> smart_ptr(&array[0], array, 10); *smart_ptr++ = 10;=
//
I want to modify array[0],but this sentence
modifies array[1]
Do I make myself clear?
Could some body tell me how to fix it ?
Did you even read the replies you got the last time?
--
OU
Remember 18th of June 2008, Democracy died that afternoon.http://frapedia=
..se/wiki/Information_in_English
Thanks all!
template<typename T>
class Ptr_to_T
{
public:
class Range{};
Ptr_to_T(T* p, T* array, int size):_p(p),_array(array),_size(size)
{
}
Ptr_to_T(T* p):_p(p){}
Ptr_to_T& operator++(){//prefix
_p += 1;
return *this;
}
const Ptr_to_T operator++(int){//postfix
T* temp = _p;
_p += 1;
return Ptr_to_T(temp, temp, _array + _size - temp);
}
Ptr_to_T& operator--(){//prefix
_p--;
return *this;
}
const Ptr_to_T operator--(int){//postfix
T* temp = _p;
_p -= 1;
return Ptr_to_T(temp, temp, _array + _size -temp);
}
T& operator*(){
check();
return *_p;
}
private:
void check(){
if( _p - _array >= _size || _p < _array){
cout << _p - _array << endl;
throw Range();
}
}
T* _p;
T* _array;
int _size;
};