Qt我应该从QDataStream派生出来吗?

时间:2010-03-11 20:25:19

标签: c++ qt code-reuse

我目前正在使用QDataStream来序列化我的课程。我有很多自己经常序列化的类。我应该派生QDataStream来创建自己的DataStream类吗?还是有比这更好的模式?请注意,我们的许多项目都使用这些自定义类,因此这样做可以使编码更容易。

另一种表达这个问题的方法是:当框架为您提供序列化类时,如何处理序列化自己的自定义类,这样您就不必记住每次序列化它们(增强可用性)并遵循最佳软件工程实践(以下模式)。

2 个答案:

答案 0 :(得分:4)

这会很快失控。更好的方法是在operator<<和您的班级之间定义operator>>QDataStream。更简洁的可能是在您的类上只读取/写入QDataStream的序列化方法(以便您可以调用,例如,obj->serialize(myStream))。

答案 1 :(得分:0)

我正在处理的当前方式如下:

我不是从QDataStream派生,而是为每个需要序列化的对象创建一个序列化器类。

例如,如果我有:

class MyOwnClass

然后我会创建一个名为:

的类
class MyOwnClassSerializer
{
public:
  static QByteArray const serialize(MyOwnClass const&);
};

我没有添加

的原因
QByteArray serialize() const;

class MyOwnClass是因为人们可以使用MyOwnClass而不依赖于Qt。此外,并非所有MyOwnClass客户都对序列化课程感兴趣。

任何评论将不胜感激! =)