( utpKabel | 2013. 02. 05., k – 14:34 )

Nézd, Stroustrup is megmondta, hogy a protected láthatóság egy hack, és gyakorlatban is általában úgy használják.

Az tiszta OOP-nek az felelne meg, ha az adattagok private-ek, a metódusok pedig public. Ezt pedig a C-ben magától értetődően megoldható. Egyszerűen nem kell berakni headerbe a struct definícióját, csak annyit hogy "struct Object;" vagy "typedef struct _Object *Object;". Ezzel már megvan a név, lehet rá pointert csinálni, és így meg lehet írni a headerben a függvény-prototípusokat. C++ épp ugyanúgy pointerként adja át az objektumot a metódusnak (this), csak ez el van rejtve. És ennek ellenére a C++ kényszerít, hogy fordítsd újra a kódod, ha valaki hozzárak a használt osztályhoz egy private adattagot (idióta value semantics). Jó, persze lehet pimpl-özni, de hol van az a C egyszerűségéhez képest, amikor ugyanazt adja, ami C-ben magától értetődő volt?