QSharedPointers 및 QWeakPointers와 연결된 복잡한 개체 네트워크가 있습니다. Boost.Serialization으로 저장 /로드하는 간단한 방법이 있습니까? 그들은 모두 참조 카운트는 또한 즉시 약한 포인터를 해제 1. 생각 있도록 공유 포인터는 항상 원시 포인터로 구성되어 있기 때문이 작동하지공유/약 포인터를 직렬화하는 방법은 무엇입니까?
namespace boost {
namespace serialization {
template<class Archive, class T>
void save(Archive& ar, QSharedPointer<T> const& ptr, unsigned version) {
T* sharedPointer = ptr.data();
ar & BOOST_SERIALIZATION_NVP(sharedPointer);
}
template<class Archive, class T>
void load(Archive& ar, QSharedPointer<T>& ptr, unsigned version) {
T* sharedPointer = 0;
ar & BOOST_SERIALIZATION_NVP(sharedPointer);
ptr = QSharedPointer<T>(sharedPointer);
}
template<class Archive, class T>
void save(Archive& ar, QWeakPointer<T> const& ptr, unsigned version) {
T* weakPointer = ptr.toStrongRef().data();
ar & BOOST_SERIALIZATION_NVP(weakPointer);
}
template<class Archive, class T>
void load(Archive& ar, QWeakPointer<T>& ptr, unsigned version) {
T* weakPointer = 0;
ar & BOOST_SERIALIZATION_NVP(weakPointer);
ptr = QSharedPointer<T>(weakPointer);
}
}
}
: 지금까지 나는이 있습니다.
약간의 노력으로 클래스를 boost::shared_ptr
및 boost::weak_ptr
으로 변환 할 수 있습니다. 그게 좋은 일 이니?
제 2의 해결책이 저에게 효과가 있다고 생각합니다. 감사합니다. – stribika