I QSharedPointers ve QWeakPointers bağlı nesnelerin karmaşık bir ağ bulunmaktadır. Boost.Serialization ile kaydetmek/yüklemek için basit bir yolu var mı? hepsi referans sayısı Aynı zamanda hemen zayıf işaretçileri boşaltır 1. olduğunu düşünüyorum bu yüzden paylaşılan işaretçileri hep çiğ işaretçiler inşa Bunun nedeni çalışmıyorPaylaşılan/zayıf işaretçiler nasıl serileştirilir?
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);
}
}
}
: Şimdiye kadar bu var. Ben sınıfları boost::shared_ptr
ve boost::weak_ptr
kullanmak dönüştürebilirsiniz biraz çaba ile
. Bu iyi olacak mı?
ben 2 çözüm benim için çalışması gerektiğini düşünüyorum, teşekkür ederim. – stribika