2011-12-16 33 views
19

Tôi đang sử dụng boost.serialization. một số sử dụng BOOST_SERIALIZATION_NVP mẫu mã trong phương pháp serialize:BOOST_SERIALIZATION_NVP làm gì khi tuần tự hóa đối tượng?

template<class Archive> 
void save(Archive & ar, const unsigned int version) const 
{ 
    ar & BOOST_SERIALIZATION_NVP(_from_prop); 
} 

Tôi cố gắng để google chức năng của nó nhưng không hữu ích được tìm thấy. diff giữa

ar & BOOST_SERIALIZATION_NVP(_from_prop) 

ar & _from_prop? 

Trả lời

31

BOOST_SERIALIZATION_NVP là những gì đang macro mở rộng (trong ví dụ của bạn) tới:

template<class Archive> 
void save(Archive & ar, const unsigned int version) const 
{ 
    ar & boost::serialization::make_nvp("_from_prop", _from_prop) 
} 

make_nvp là một wrapper đóng vai trò giống như serializing trực tiếp bằng cách

ar & _from_prop; 

trừ khi tuần tự hóa thành lưu trữ XML. Một kho lưu trữ XML cần một số tên được sử dụng cho thẻ XML. Tên này là tên được chỉ định trong tham số chuỗi là make_nvp.

Các vấn đề liên quan