grimlok@hubcap.clemson.edu (Mike Percy) (07/27/90)
If I've declared something as
class X {
int count;
public:
X(X& another_X); // construct a new X from an old X
X operator +(X& rhs);
:
}
and I have
X X::operator +(X& rhs)
{
// make a temporary copy of the lhs or rhs, withever is larger
X temp(count > rhs.count ? this : rhs);
// do stuff with temp
return temp;
}
This causes problems as this is of type
X *this
and rhs is of type
X& rhs
I don't want to write it as X X::operator +(X *rhs) because I want to do
stuff like
X a, b, c;
c = a + b; // don't want to have to do c = a + &b;
How do I properly get a X& from X *this? steve@taumet.com (Stephen Clamage) (07/28/90)
grimlok@hubcap.clemson.edu (Mike Percy) writes: |X X::operator +(X& rhs) |{ | // make a temporary copy of the lhs or rhs, withever is larger | X temp(count > rhs.count ? this : rhs); ^^^^ *this | // do stuff with temp | return temp; |} Use '*this' instead of 'this' where indicated. An object of type T may be freely used where one of type T& is expected, and vice versa. Now both sides of the ':' operator have equivalent types. -- Steve Clamage, TauMetric Corp, steve@taumet.com