Przeciążenie operatora przypisania poza klasą

Przeciążenie operatora przypisania poza klasą
MI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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?

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
3

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

MI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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ą.

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
2

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

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
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ć.

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
2

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

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

foo &foo::operator = (const foo &other) { return *this; }
MI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.