Re: Assignment operator=/copy constructor/temporaries, BROKEN!
On 2010-09-17 14:32:06 -0400, Fabrizio J Bonsignore said:
I want this to be compilable and working AS IS:
If it doesn't work and you keep it AS IS, it will continue not to work.
So presumably AS IS means something less than AS IS.
class AO
{
public:
int i;
void Aha();// {i=1;}
AO &operator=(AO &x);// {i=x.i; return *this;}//should not matter if
inline or not
AO();// : i(0) {}
AO(AO &x);// {i=x.i;}
virtual ~AO();// {}
};
void AO::Aha() {
i=1;
}
AO::AO()
: i(0) {
}
AO::AO(AO &x) {
This is usually a mistake; copy constructors should take their argument
by const&, not by non-const&, except in very unusual circumstances.
i=x.i;
}
AO &AO::operator=(AO &x) {
Same here: the argument should almost certainly be const&, not plain &.
i=x.i;
return *this;
}
Don't know if that helps. I haven't waded through all the
similar-looking code to try to figure out what error, if any, you're
seeing.
--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)