problem with operators = and multiple +

D

david

The code is located here:
http://www.paste.lt/paste/fafbd9fbfc71e25f12458aacf61aca8f

Before telling the problem I am now having and I would like to you
that there is still a lot of mistakes, missing parts, "const" words
and etc, but it works as it should be. I will make it better after I
will solve my problem.


So I have problem with = and + and even * (just wrote this part of
code) and I think I will be having in the future if I won't handle and
understand it now. The problem is in 352 line (there are two lines).
If I try to do like this: aaa + bbb + ccc it does work and returns new
intance of Aibe (not pointer or reference), aaa = bbb works just fine
too, it should make a deep copy of bbb (there still should be some
correction in code, like checking a = a, freeing memory of the first
one and etc.), but the code aaa = bbb + ccc + ... just does not work.
I am using gcc under Linux/Solaris/Mac OS X and I am getting this
error:

Macbook:pirma marius$ g++ -Wall -ansi -pedantic -o pirma pirma.cpp
pirma.cpp: In function 'int main(int, const char**)':
pirma.cpp:358: error: no match for 'operator=' in 'aaa =
Aibe::eek:perator*(Aibe&)(((Aibe&)(& ccc)))'
pirma.cpp:238: note: candidates are: Aibe& Aibe::eek:perator=(Aibe&)
pirma.cpp:359: error: no match for 'operator=' in 'aaa = Aibe::eek:perator
+(Aibe&)(((Aibe&)(& ddd)))'
pirma.cpp:238: note: candidates are: Aibe& Aibe::eek:perator=(Aibe&)

Could someone help with this?
It looks that I made some mistakes declarating operators or there is
some problems with returning types.

P.S. Sorry for making mistakes, too tired to make something correct.
 
T

Thomas J. Gritzan

david said:
The code is located here:
http://www.paste.lt/paste/fafbd9fbfc71e25f12458aacf61aca8f

Before telling the problem I am now having and I would like to you
that there is still a lot of mistakes, missing parts, "const" words
and etc, but it works as it should be. I will make it better after I
will solve my problem.


So I have problem with = and + and even * (just wrote this part of
code) and I think I will be having in the future if I won't handle and
understand it now. The problem is in 352 line (there are two lines).
If I try to do like this: aaa + bbb + ccc it does work and returns new
intance of Aibe (not pointer or reference), aaa = bbb works just fine
too, it should make a deep copy of bbb (there still should be some
correction in code, like checking a = a, freeing memory of the first
one and etc.), but the code aaa = bbb + ccc + ... just does not work.
I am using gcc under Linux/Solaris/Mac OS X and I am getting this
error:

The problem is the missing "const" words and etc. :)

For example, your operator+ here:
Aibe operator + (Aibe &two);
should be:
Aibe operator + (const Aibe& two) const;

When you write
a = b + c;
the operator+ member function returns a temporary object. Temporaries
cannot be bound to non-const references, so all your functions taking only
non-const references won't take the result of calling one of your binary
operators.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top