Byl představen CentOS Stream 10 s kódovým názvem Coughlan. Detaily v poznámkách k vydání. CentOS Stream 10 už neobsahuje balíček s Xorg serverem (xorg-x11-server-Xorg). O zobrazování se stará Wayland s Xwaylandem (xorg-x11-server-Xwayland). Odstraněny byly aplikace Firefox, GIMP, LibreOffice, Inkscape a Thunderbird. Ty jsou k dispozici ve Flatpaku z Flathubu.
Byly vyhlášeny výsledky The Game Awards 2024 (YouTube). Hrou roku se stal Astro Bot (YouTube) běžící pouze na PlayStation 5.
Na GOG.COM probíhá Winter Sale 2024. Při té příležitosti lze každý den do konce roku získat zdarma jinou počítačovou hru, viz kalendář uprostřed stránky Winter Sale 2024. Otevření balíčku se hrou vždy ve tři odpoledne. První hrou je The Whispered World: Special Edition.
Nezisková organizace Internet Security Research Group (ISRG) vydala Výroční zprávu za rok 2024 (pdf). Organizace stojí za certifikační autoritou Let's Encrypt, projektem Prossimo, jehož cílem je používání paměťově bezpečného kódu v kritické internetové infrastruktuře a službou Divvi Up řešící telemetrii respektující soukromí uživatelů.
Vývojáři PeerTube, tj. svobodné alternativy k videoplatformám velkých technologických společností, představili mobilní aplikaci PeerTube (Google Play, App Store). Zdrojové kódy jsou k dispozici na Framagitu.
Google představil Gemini 2.0, tj. novou verzi svého modelu umělé inteligence (YouTube).
Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.12. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Byla vydána nová verze 3.27 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.6 souvisejícího programovacího jazyka Dart (Wikipedie).
Byla vydána (𝕏) listopadová aktualizace aneb nová verze 1.96 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.96 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
class Hrac { private: QString * jmeno; QColor * barva; int * znak; int * body; public: Hrac(); Hrac(const Hrac &other); ~Hrac(); void nastavVlastnosti(QString jmeno, QColor barva, int znak, int body); int * zjistiZnak(); int * zjistiBody(); QColor * zjistiBarvu(); QString * zjistiJmeno(); TypHrace * zjistiTyp(); bool checkForVictory(); friend QDataStream &operator<<(QDataStream &out, Hrac &hrac); void serialize(QDataStream& ost); static Hrac unserialize(QDataStream& istr); };
Řešení dotazu:
serialize
a unserialize
, definice třídy se zdá v pořádku
QDataStream& operator <<(QDataStream &out, Hrac &hrac)
nemusí být friend, protože použije (měl by použít ) veřejnou metodu serialize
unserialize
by mělo vracet Hrac*, jinak se tam bude volat (zbytečně) copy konstruktor. Lepší by ale bylo vytvořit deserializační konstruktor explicit Hrac(QDataStream &str)
Btw. proč jsou tam ty dva int
y (znak
a body
) dynamicky alokované?
QDataStream &operator<<(QDataStream &out, Hrac &hrac) { return(out << hrac.jmeno->length()<< " " << hrac.jmeno->toAscii() << " " << hrac.barva << " " << hrac.znak << " " << hrac.body); } void Hrac::serialize(QDataStream &ost) { ost << this; } Hrac Hrac::unserialize(QDataStream &istr) { Hrac tmp; int delkajmena; QString jmeno; QColor barva; int znak; int body; istr >> delkajmena; //istr.readBytes() //? tmp.nastavVlastnosti(jmeno,barva,znak,body); return tmp; }Tu deserializaci udělám pomocí toho kontruktoru, takové řešení mě nenapadlo, díky. Dynamickou alokaci tam používám pro všechny objekty uvnitř tříd, neměl by v tom být žádný rozdíl ne? Kdyby vás zajímal ještě nějaký kus kódu, tak to celé mám na SVN pod http://code.google.com/p/pisqorky/source/browse/trunk#trunk/src .
Dynamickou alokaci tam používám pro všechny objekty uvnitř tříd, neměl by v tom být žádný rozdíl ne?I kdyby to byla pravda, tak proč se v takovym případě namáhat?
void Hrac::serialize(QDataStream &str) { str << *this->jmeno << *this->barva << *this->znak << *this->body; } void Hrac::unserialize(QDataStream &str) { str >> *this->jmeno >> *this->barva >> *this->znak >> *this->body; }resp. s konstruktorem:
Hrac::Hrac(QDataStream &str) : jmeno(new QString()) , barva (new QColor()) , znak (new int(0)) , body (new int(0)) { this->unserialize(str); }a pokud budou potřeba, tak přidat operátory
QDataStream& operator <<(QDataStream &str, Hrac &hrac) { hrac.serialize(str); return str; } QDataStream& operator >>(QDataStream &str, Hrac &hrac) { hrac.unserialize(str); return str; }
Tiskni Sdílej: