我正在使用一个工厂类从内存池中生成一些小类。这些小类一旦被工厂返回就保持不变。
目前这些小对象之一的典型声明是这样的:
class LittleObject
{
public:
...//non-getter and setter member functions
int getMemberVariable1() const;//should be accessible to everyone
void setMemberVariable1(int newMemberVariable1Value);//should only be accessible to factory class
...//more getters and setters
private:
...
};
因此,如您所见,getter 和 setter 都在公共(public)区域。但是唯一应该设置值的时间是在工厂类构建它的时候。现在,我可以清楚地看到一个选项,我将 setter 函数移动到私有(private)访问并使工厂成为 LittleObject 类的友元。我觉得这个选项有点不雅,因为它向工厂公开了其他私有(private)成员函数。工厂没有业务访问的私有(private)成员函数。
所以我的问题是:只有工厂类才能使用 setter 函数的最佳方法是什么?
最佳答案
我会使用 friend class
:
class LittleObject
{
friend class LittleObjectFactory;
public:
int getMemberVariable();
private:
void setMemberVariable( int value );
};
关于c++ - 我应该如何处理只应由工厂类使用的 setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538071/