1
Vývoj / Re:C++ a přidání „členské proměnné“
« kdy: 22. 06. 2012, 17:55:46 »
Co je na PIMPL neelegantni? :-) Neni problem do kazde tridy pridat ukazatel na Private tridu, i kdyz by ta Private trida byla (zatim) prazdna.
Normalne staci jen pointer, ale hodi se jeste friend class MyClassPrivate (aby vam trida mohla volat privatni/protected funkce, pokud je zakladni trida ma) a
abyste mohl pristupovat k te private tride i v const metodach.
V Qt je na tohle pekne makro Q_DECLARE_PRIVATE(class_name), ktere to automaticky generuje a vypada to otrosku hezceji :-)
Ad 2b) - pridani nove metody do tridy nerozbiji ABI (nema vliv na velikost struktury). Nemuzete ale pretizit nepretizenou metodu (pokud uz je metoda alespon jednou pretizena, muzete v klidu pridat dalsi pretezujici metodu), nemuzete pridat virtualni funkci a reimplementovat virtualni funkci, pokud uz ji nektery z predku implementuje.
Normalne staci jen pointer, ale hodi se jeste friend class MyClassPrivate (aby vam trida mohla volat privatni/protected funkce, pokud je zakladni trida ma) a
Kód: [Vybrat]
MyClassPrivate * const d_func() const
abyste mohl pristupovat k te private tride i v const metodach.
V Qt je na tohle pekne makro Q_DECLARE_PRIVATE(class_name), ktere to automaticky generuje a vypada to otrosku hezceji :-)
Ad 2b) - pridani nove metody do tridy nerozbiji ABI (nema vliv na velikost struktury). Nemuzete ale pretizit nepretizenou metodu (pokud uz je metoda alespon jednou pretizena, muzete v klidu pridat dalsi pretezujici metodu), nemuzete pridat virtualni funkci a reimplementovat virtualni funkci, pokud uz ji nektery z predku implementuje.