Kezdőoldal » Számítástechnika » Programozás » Hogy kell felüldefiniálni...

Hogy kell felüldefiniálni C++-ban a << operátort?

Figyelt kérdés
Hiába guglizok már fél órája, sehol egy árva példát nem találok rá, miközben szinte az össze többi operátor felüldefiniálására igen. Egy saját típus kiiratásához kellene megcsinálnom.

2012. dec. 11. 19:49
 1/7 iostream ***** válasza:
60%

[link]


Tessék, gugliztam neked. Azért tanulj meg ennél jobban guglizni, mert hasznos lesz később.

2012. dec. 11. 19:51
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

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?

2012. dec. 11. 20:02
 3/7 A kérdező kommentje:
Közben rájöttem. Az adott osztályban (aminek egy példányát kiírom) csak implementálni kell friendként, és a main fájlban kifejteni. Legalább is így működik az én esetemben.
2012. dec. 11. 20:24
 4/7 anonim ***** válasza:
0%

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.

2012. dec. 11. 20:49
Hasznos számodra ez a válasz?
 5/7 iostream ***** válasza:

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.

2012. dec. 11. 21:02
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Igen igen, nekem is van még bőven mit tanulni. :)
2012. dec. 11. 21:17
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:
Köszönöm! Amgyú igen, a gondban vagyok a definiálás/deklarálás/implementálás fogalomhármassal. Mindig keverem őket :(
2012. dec. 11. 22:37

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!