Przeciążenie operatora przypisania poza klasą

0

Witam!

Chciałbym zapytać, czy znacie sposób na przeciążenie operator=() poza klasą? Przeciążałem już ten operator, ale zawsze wewnątrz klasy. Na każdą moją wersję kompilator reaguje błędem (pisząc, że ten operator musi znajdować się wewnątrz klasy). Może ktoś wie jak rozwiązać ten problem?

3

13.5.3.1: An assignment operator shall be implemented by a non-static member function with exactly one parameter.

0

Czyli jeśli dobrze rozumiem ten operator powinien być implementowany wewnątrz klasy? Jednakże mam zadanie, którego treść każe zrobić to poza klasą.

2

No to pokaż autorowi zadania cytatowany przeze mnie fragment standardu C++11.

4

To znaczy, że ten który stworzył to zadanie, nie zna C++. Albo coś źle zrozumiałeś polecenie.

A ten operator musi być metodą klasy dlatego że kompilator generuje domyślny gdy go nie widzi (oraz są spełnione pewne inne warunki), i Twój zewnętrzny mógłby z nim kolidować.

2

Chyba że chodzi o definicje takowego operatora poza klasą. Wtedy okej.

class foo {
    foo &operator = (const foo &);
};

foo &foo::operator = (const foo &other) { return *this; }
0

Najlepiej będzie jak wrzucę treść (chodzi o zad. 1): https://postimg.org/image/4y0hv1w0h/

1 użytkowników online, w tym zalogowanych: 0, gości: 1