Kezdőoldal » Számítástechnika » Programozás » Vlaki esetleg tud C++-ból...

Vlaki esetleg tud C++-ból segíteni?

Figyelt kérdés

Itt: [link]

Ebben a kódrészletben:

template<class Os, class Co>

Os& operator<<(Os& os, const Co& v)

{

for (auto i : v)

os << i << ' ';

return os << '\t';

}

Mit jelent a class Co paraméter? Illetve honnan jön? Hol van definiálva?

Ez valami általános paraméter STL adatszerkezetek fogadására?

Eddig csak ilyet láttam:

template<typename T>

std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec)

{

for (auto& el : vec)

{

os << el << ' ';

}

return os;

}

De itt egyértelmű, hogy egy std::vector esetén történő kiíratás operátor túlterhelésről van szó (globális vagy free functionként).



#túlterheltség #operator<< #globális függvény #free function
2023. máj. 9. 07:35
 1/1 anonim ***** válasza:

Azt te definiáltad a template-ben.

Nem adtál meg mást, csak két osztálynevet, ahol typename helyett a classt használták. Tudomásom szerint a kettő nagyjából ugyanazt az eredményt adja.

Az osztályneved pedig (Co és Os) az egy tetszőleges név, A és B is lehetne...

A lényeg az, hogy veszel két osztálypéldányt, és akarsz rá << operátort, úgy hogy az eredmény Os legyen, akkor azt így oldod meg.


Gyakorlati példa, a fent megírt template így néz ki, ha String és vector<Double> osztályra hívnád meg: Ekkor a String lenne Os néven, a vector Co néven (ha ebben a sorrendben használjuk), de ez csak egy példa.


String& operator<<(String& os, const vector<Double>& v)


{


for (auto i : v)


os << i << ' ';


return os << '\t';


}


Talán így jobban érted.

2023. máj. 9. 18:29
Hasznos számodra ez a válasz?

További 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!