我有一个类,我将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会将所有成员变量公开给其他所有不需要或不需要的人。
- 使用初始化函数会很好,但我不想要其他任何可以访问该函数的东西 - 朋友函数可能吗?
任何想法都值得赞赏,我会澄清我能做到的地方。对不起,代码模糊不清,并没有很充实,但希望它足以看到问题的症结所在。
由于
答案 0 :(得分:0)
您所描述的似乎是序列化/反序列化。从(XML)配置文件备份/检索对象数据是很常见的。也许一个好的开始是Boost Serialization Tutorial。
更基本上,您的问题的答案可能是"使用朋友'类本身的函数/类"。