我想知道如何最好在 C++ 中创建一个数据实体,其中“setter”是私有的,“getter”是公共的。即实体的创建者应该能够设置数据,但用户/消费者/客户端只能获取数据。
让我们考虑实体 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;
}
在我看来,这使得 setter 是私有的,而 getter 是公共的,但是如果数据成员大于 5-10,这个例子是不切实际的......你将如何制作一个实体类/结构,使得 setter 是“私有的”并且“getter”是“public”,而不使构造函数接受所有数据成员变量。
提前致谢