Hogy kell felüldefiniálni C++-ban a << operátort?
Még nem értettem meg a dolgot, de először is köszönöm! Másodszor: Hogyan gugliztál rá? (De komolyan)
Harmadszor: Ezt a hibát kapom rá fordításkor
In file included from utas.cpp:1:0:
utas.hpp:16:44: error: 'std::ostream& Utas::operator<<(std::ostream&, const Utas&)' must take exactly one argument
utas.cpp:18:58: error: 'std::ostream& Utas::operator<<(std::ostream&, const Utas&)' must take exactly one argument
In file included from main.cpp:1:0:
utas.hpp:16:44: error: 'std::ostream& Utas::operator<<(std::ostream&, const Utas&)' must take exactly one argument
Az osztály header file-jában ott van, a cpp fájljában pedig kifejtettem, pontosan úgy, ahogy a linkelt példában van. Mégis ezt kapom rá. Miért akar egy operandust, amikor ennek kettő kell?
Mármint deklarálni és definiálni.
Van némi gond még az alapkifejezésekkel is. :)
Nyilván nem az osztályon belül definiálod, hiszen nem a saját felhasználói osztályod tagfüggvénye, hanem a std::ostream típusé, abba meg nem tudsz belenyúlni, így kénytelen vagy globális függvényként definiálni.
A friend pedig azért kell, hogy a privát adattagokat elérhesse az osztályodból.
operator overload ostream
Erre a kifejezésre kerestem.
Amúgy itt értem mit szerettél volna, csak rosszul mondtad: "Nyilván nem az osztályon belül definiálod, hiszen nem a saját felhasználói osztályod tagfüggvénye, hanem a std::ostream típusé, abba meg nem tudsz belenyúlni, így kénytelen vagy globális függvényként definiálni."
Nem lehet egyszerre globális és az ostream tagfüggvénye, az első az igazi.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!