「セッター」がプライベートで「ゲッター」がパブリックであるC ++でデータエンティティを作成するのが最善の方法だと思っていました。つまり、エンティティの作成者はデータを設定できる必要がありますが、ユーザー/消費者/クライアントはデータを取得することしかできません。
エンティティ EntityX を考えてみましょう:
class EntityX
{
public:
EntityX(int x, int y) : x(x), y(y)
{}
int GetX() const {return x;}
int GetY() const {return y;}
private:
int x,y; // Effective C++ third edition, Item 22: Declare data members private
}
そして、エンティティを作成してクライアントに返すクラス メソッド:
const shared_ptr<EntityX> classz::GetEntityX()
{
shared_ptr<EntityX> entity(new EntityX(1,2));
return entity;
}
これにより、セッターがプライベートになり、ゲッターがパブリックになりますが、データメンバーが5〜10を超える場合、この例は実用的ではありません...セッターが「プライベート」であり、 「ゲッター」は「パブリック」であり、コンストラクターにすべてのデータメンバー変数を取り込ませません。
前もって感謝します