Discussion:
overloading operator ->*
(too old to reply)
n2xssvv g02gfr12930
2005-11-25 18:30:56 UTC
Permalink
Does anyone know of an example of overloading operator ->*

Cheers

JB
Gianni Mariani
2005-11-25 19:01:31 UTC
Permalink
Post by n2xssvv g02gfr12930
Does anyone know of an example of overloading operator ->*
Austria C++ has "smart pointers" that do this.

The operator needs to return a pointer.

struct T
{
int x;
};

struct X
{

T * m_ptr;

T * operator->()
{
return m_ptr;
}
};
n2xssvv g02gfr12930
2005-11-26 09:53:17 UTC
Permalink
Post by Gianni Mariani
Post by n2xssvv g02gfr12930
Does anyone know of an example of overloading operator ->*
Austria C++ has "smart pointers" that do this.
The operator needs to return a pointer.
struct T
{
int x;
};
struct X
{
T * m_ptr;
T * operator->()
{
return m_ptr;
}
};
That's not an example of overloading 'operator ->*' but 'operator ->'.

JB
Gianni Mariani
2005-11-26 22:35:56 UTC
Permalink
Post by n2xssvv g02gfr12930
That's not an example of overloading 'operator ->*' but 'operator ->'.
Yep, you're right. My mistake.


struct S
{
int z;

int & operator ->* ( int S::* const & x )
{
return this->*x;
}

};

struct Y
{
int z;

template <typename T>
T & operator ->* ( T Y::* const & x )
{
return this->*x;
}

};

int main()
{
S s;
int S::* pmz = &S::z;

s->*( pmz ) = 3;

Y y;
int Y::* pmy = &Y::z;

y->*( pmy ) = 3;
}

Protoman
2005-11-26 21:20:30 UTC
Permalink
What does ->* do? and what does .* do?
ben
2005-11-26 12:56:05 UTC
Permalink
Post by n2xssvv g02gfr12930
Does anyone know of an example of overloading operator ->*
Cheers
JB
How do you overload two operators at the same time???
Ben
John Harrison
2005-11-26 12:53:42 UTC
Permalink
Post by ben
Post by n2xssvv g02gfr12930
Does anyone know of an example of overloading operator ->*
Cheers
JB
How do you overload two operators at the same time???
Ben
->* is only one operator, just like .*

The are used with 'pointers to members'. Look them up in your favourite
C++ book.

john
Loading...