2010-03-11 36 views
0

我目前使用QDataStream來序列化我的類。我有很多我自己的類,我經常序列化。我應該派生QDataStream來創建我自己的DataStream類嗎?還是有比這更好的模式?請注意,我們的許多項目都使用這些自定義類,因此可能會這樣做會使編碼更容易。Qt我應該從QDataStream派生嗎?

另一種解釋這個問題的方法是:當一個框架爲您提供一個序列化類時,您如何處理序列化您自己的自定義類的類,以便您不必記住每次如何序列化它們(增強可用性),並遵循最佳的軟件工程實踐(遵循模式)。

回答

4

這會很快失去控制。更好的方法是在QDataStream和你的班級之間定義operator<<operator>>。即使更乾淨也可能只是在您的類上讀取/寫入QDataStream的序列化方法(例如,您可以調用obj->serialize(myStream))。

0

我正在處理這個目前的方法是如下:

而不是從QDataStream派生,我爲每一個對象,我需要序列化一個序列化器類。

舉例來說,如果我有:

class MyOwnClass 

然後我會創建一個名爲類:

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

,爲什麼我沒有添加

QByteArray serialize() const; 

的緣故class MyOwnClass是讓人們可以使用MyOwnClass而不依賴於Qt。並不是所有的MyOwnClass客戶都有興趣序列化這個類。

任何意見將不勝感激! =)

+1

''<<' and '>>'操作符將作爲序列化程序類。他們不必定義數據類,而是獨立的函數。 – 2010-03-11 20:36:07

+0

我應該在哪裏放置最好的方式運行'>>和'<<'運算符?在一對.h和.cpp中以及對於每種新數據類型,我只需添加到該組文件中? – sivabudh 2010-03-11 20:41:34

+1

如果你不想讓這些類依賴於Qt,那麼單獨的文件是唯一的方法。否則,我會將它們定義在與數據類相同的文件中。 – 2010-03-11 21:17:28

相關問題