2013-04-16 94 views
1

我有一個對象,我使用boost存檔序列化。該對象有一個boost::math::normal_distribution<double> distribution類型的成員,但是boost不提供這種類型的序列化方法,所以我將序列化均值和標準偏差。我的序列化功能看起來像:boost序列化:反序列化時更新成員

template<class Archive> 
    void serialize(Archive& ar, const unsigned int version){ 
     ar & BOOST_SERIALIZATION_NVP(mean); 
     ar & BOOST_SERIALIZATION_NVP(std); 
    } 

當對象反序列化,我希望做一個重新創建這些參數的分佈(如默認爲均值爲0,STD 1構造)。我在哪裏放這個代碼?在構造函數中?

感謝

+1

您可以拆分保存和加載函數(BOOST_SERIALIZATION_SPLIT_MEMBER),並且在加載方法中,您可以在具有均值和標準偏差後實例化分佈。 – Scottymac

回答

1

我不認爲目前實施normal_distribution的是序列化的,因爲它沒有任何手段來設置它的值,它的建設之後。

一種解決方法可以在堆上分配normal_distribution並使用保護/加載模式,而不是一個序列化功能就像是記錄在這裏:http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html#splitting

在裝載機可以構造normal_distribution與新加載的參數。