Vlaki esetleg tud C++-ból segíteni?
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).
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!