structとclassには思想的な違いがある

structは単にデータを集約するしくみであって、どこまでいってもメンバの詳細に興味がある場面で使う
この場合の設計は、structを食わす手続きが簡明になるとか、実行効率が上がるとかいった基準で
まずstruct内部の詳細から始まる
伝統的な手続き型プログラミングとはそーいうものだし、

classはむしろ詳細を隠蔽して抽象化を果たすためのしくみであって、
classの設計は、他のクラスに対してどうみせかければシステム全体として無矛盾性とか一貫性を保てるか、という観点で
まず公開インターフェースの設計から始まる
臭いものをしばしば臭いまま放置して蓋だけをする