problem with operators = and multiple +

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • david

    #1

    problem with operators = and multiple +

    The code is located here:


    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::operator* (Aibe&)(((Aibe& )(& ccc)))'
    pirma.cpp:238: note: candidates are: Aibe& Aibe::operator= (Aibe&)
    pirma.cpp:359: error: no match for 'operator=' in 'aaa = Aibe::operator
    +(Aibe&)(((Aibe &)(& ddd)))'
    pirma.cpp:238: note: candidates are: Aibe& Aibe::operator= (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.
  • Thomas J. Gritzan

    #2
    Re: problem with operators = and multiple +

    david schrieb:
    The code is located here:

    >
    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.

    --
    Thomas

    post tenebras lux. post fenestras tux.

    Comment

    Working...