通过解析器初始化类

时间:2016-10-26 02:50:59

标签: c++ c++11

我有一个类,我将CObject命名为很多私有数据成员..

class CObject
{
   private:
   int a, b, c, d, e, f, g, h, i;
   string j;
   ...More data types etc
};

另一个解析初始化文件的类递归地查找对象的成员。这个类满足了库提供的虚拟类。

class CParser
{
   public:
    void beginParsingObject()
    {
      //etc
    }

    void parseObjectMembers(string name, int a)
    {
       //Found a member variable of the object!
    }

    void finishParsingObject()
    {
       //Finish up parsing the object
    }
};

所以" parseObjectMembers"会被调用多次,因为CObject类中有成员变量。

当解析器在其数据文件的条目中找到它的下一个成员变量时,CObject类将填充它的成员变量。

这是我的困惑:

在读取数据时,在CObject中设置成员变量的好方法是什么?

- 使用构造函数意味着缓存通过的每个值,并在完成解析对象时构造对象 - 不太令人满意,并且我希望解析器非常通用。

- 在CObject类中使用getter和setter会将所有成员变量公开给其他所有不需要或不需要的人。

- 使用初始化函数会很好,但我不想要其他任何可以访问该函数的东西 - 朋友函数可能吗?

任何想法都值得赞赏,我会澄清我能做到的地方。对不起,代码模糊不清,并没有很充实,但希望它足以看到问题的症结所在。

由于

1 个答案:

答案 0 :(得分:0)

您所描述的似乎是序列化/反序列化。从(XML)配置文件备份/检索对象数据是很常见的。也许一个好的开始是Boost Serialization Tutorial

更基本上,您的问题的答案可能是"使用朋友'类本身的函数/类"。

相关问题