1
我有一個來自3rdparty開源數學庫的mat4類。它沒有自己的序列化方法,所以我創建了我的主要項目中一個單獨的頭包含矩陣MAT4的系列化:boost ::具有成員函數和自由函數的序列化
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive & ar, mat4 & matrix, const unsigned int version)
{
// some serialization of matrix goes here...
}
} // namespace serialization
} // namespace boost
它完美地工作,直到後來,當我直接添加了序列化類MAT4和忘了刪除舊的序列號:
struct mat4
{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & BOOST_SERIALIZATION_NVP(data);
}
// some other members and functions goes here
};
經過這樣的修改後,自由函數serialize被調用。 你能解釋爲什麼自由函數被調用而不是mat4成員函數嗎?也許,我錯過了一些簡單的標準規則。
當我註釋掉免費函數 - 調用成員函數。
謝謝!非常漂亮的技術。 – innochenti 2012-03-29 20:02:41