Wpis z mikrobloga

Pytanie - dlaczego jak chcę przeciążyć operator wyjścia "<<" to przy zdefiniowaniu nagłówka funkcji w postaci:

ostream& operator<<(ostream& out, Auto& samochod)
Dostaję "Too many parameters for this opertator function".

zaś przy zdefiniowaniu jako zaprzyjaźniona funkcja:

friend ostream& operator<<(ostream& out, Auto& samochod)
jest już ok? Mógłby ktoś mi to wytłumaczyć ;)? Nie besztać, dopiero się uczę ( ͡° ʖ̯ ͡°)

#programowanie #cpp
  • 2
@Swiezutki: próbujesz pewnie zdefiniować ją jako metodę klasy Auto, a tak się nie da, bo pierwszym argumentem (ukrytym) będzie 'this'. Musiałaby to być ewentualnie metoda klasy ostream, ale nie możesz modyfikować jej źródeł. Jedyna możliwość to zdefiniować ją jako globalną funkcję i zaprzyjaźnić z klasą.