你会怎么写这些功能:
bool writesomething(const Something& something);
//or
bool writesomething(int somethingid, const Something& something);
bool readsomething(const Something& something);
//or
bool readsomething(int somethingid, Something& something);
请注意 Something 有一个名为 id 的公共字段
答案 0 :(得分:1)
这取决于Something的结构。但作为一般设计原则,你的课程应该尽可能无知。
话虽这么说,如果你想能够(de)序列化你的对象,我会在内置的I / O流库接口上建模你的I / O方法。然后,您的对象将支持来自控制台,文件以及继承自istream
或ostream
的任何其他内容的I / O.
除了维护与标准库(以及大量第三方代码)的一致接口之外,调整I / O流接口还可以更轻松地编写方法。如果Something有一个int'id'和一个字符串'name'成员:
ostream& operator << (ostream& os, const Something& thing)
{
os << thing.id;
os << thing.name;
return os;
}
如果Something的成员更复杂,则实现operator&lt;&lt;和&gt;&gt;对于那些类型,依此类推。