मेरे पास QSharedPointers और QWeakPointers से जुड़े ऑब्जेक्ट्स का एक जटिल नेटवर्क है। Boost.Serialization के साथ उन्हें बचाने/लोड करने का कोई आसान तरीका है?साझा/कमजोर पॉइंटर्स को क्रमबद्ध कैसे करें?
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);
}
}
}
यह काम नहीं कर रहा है क्योंकि साझा संकेत हमेशा कच्चे संकेत से निर्माण कर रहे हैं ताकि उन सभी को लगता है कि संदर्भ गिनती 1. यह भी तुरंत कमजोर संकेत को मुक्त कर देते है: अब तक मैं इस किया है।
कुछ प्रयासों के साथ मैं कक्षाओं को boost::shared_ptr
और boost::weak_ptr
का उपयोग करने के लिए परिवर्तित कर सकता हूं। क्या यह कोई अच्छा होगा?
मुझे लगता है कि दूसरा समाधान मेरे लिए काम करना चाहिए, धन्यवाद। – stribika