Use the Generic Accessors Class

Use the Generic Accessors Class

Generally, from an OOP perspective, the direct access to data members should be prevented. This is why we use accessors:

  Class UserDetails{public:    string getUserName() const;    void setUserName(const string& name);     string getUserLastName() const;     void setUserLastName(const string& name);      private:    string userName;    string userLastName;};

Using this technique gets tricky in the case of a changeable class. For every member you we add, you have to implement its accessors. This can get tedious if you’ve got a lot of members.
In this case, you can use the ‘generic accessors class’. This class allows you to change the class structure without any modification:

  Class GenericDataHolder : public map{public:    string get(const string& paramName)     {            string ret("");        iterator iter = find(paramName);         if (iter!=end())            ret = (*iter).second;        return ret;    }     void set(const string& paramName,const string& value)     {            insert(value_type(paramName,value));    }};  Class UserDetails : public GenericDataHolder {};  void main(){    UserDetails details;        details.set("Name","abc");    details.set("LastName","abc");    details.set("Age","10" );};


Share the Post: