2013-02-20 36 views
10

Merhaba, zaten bir C++ 11 std :: shared_ptr serisini boost :: serialization ile serileştirmeyi başaran var. Orada bir sürü eski mesaj var ama hiçbiri kabul edilebilir bir çözüm ile yok. Ben std :: shared_ptr neden kullanmak istediğimi tartışmaya girmiyorum sadece kabul!C++ 11 std :: shared_ptr + boost :: serileştirme

Bu iletiyi buldum: boost serialize and std::shared_ptr ama sorunumu cevaplamıyor std :: shared_ptr serileştirmek için sadece benim için mümkün olan boost :: shared_ptr komutunu kullanıyorum.

Ve bu ileti How can boost::serialization be used with std::shared_ptr from C++11?, yalnızca boost :: shared_ptr öğesinin kullanılmasını önerir.

Herkes zaten std :: shared_ptr serileştirmeyi yöneten bir iş bulmuş varsa ilgilenirim.

Hey guys, benim sorunum için nihayet bir çözüm bulduğum cevabım için https://stackoverflow.com/a/14999396/2039157.

+0

Std :: shared_ptr dosyasını serialize etmek için boost :: shared_ptr dosyasına dönüştürün. – ForEveR

+0

Evet, “boost :: shared_ptr” seçeneği bir seçenek ise, bunun cevabı: http://stackoverflow.com/questions/9944274/boost-serialize-and-stdshared-ptr – jogojapan

+0

Hm, Tam olarak ne demek istiyorsunuz? Umarım std :: shared_ptr dosyasını boost :: shared_ptr ile değiştirmek istemezsiniz.) Lütfen dönüşümün nasıl çalışması gerektiğine dair bir örnek verin. – denim

cevap

0

"Sadece", "sadece", "sadece" nesne işaretçisi serileştirme için shptr-serileştirme "çevirecek" bir serileştirici < < ve deserializer >> oluşturmak mümkün değil mi? Henüz tamamlanmadıysa, bunun < 100 satır kodunda mümkün olduğundan neredeyse eminim.

Ayrıca, sormamayı belirttiğinizi biliyorum, ancak yine de yapacağım: Shptr olan "X" değişkeni serileştirmeye çalıştığınızda, neden sadece "shptr" dizgesini dizileştiremezsiniz? Bu, smartptrs için seri hale getirme ile uğraşmak için yeterince fark görünmüyor .. Hm .. tamam. estetik. Ama yine de yapabileceğini düşünüyorum.

Neyse ki başka bir duvara vurabilir: Eğer sınıf mirası kullanın ve temel sınıf için işaretçi üzerinden shptr içindeki nesnelerin boyunca taşımak, sen serileştirici gerçekte ne olduğunu kalmayacağı açıktır sorun eğer serileştirilmesi emrediliyor. Ama bu, RTTI olmadan serileştirme için klasik bir problem, bu yüzden, bir şekilde çözmeniz gerekiyor, ama bu shptrs problemi değil.

sorumluluk reddi: son kez destek kullanıyorum :: serileştirme birkaç yıl önceydi. Aslında shptr'i serileştirmeyi denemedim, ama hatırladığım kadarıyla, bu açık bir çerçeveydi, herhangi bir özel tip için genişletmek nispeten kolaydı, bu yüzden shptr'lerin benim garip sınıflarımdan daha iyi olmadığını düşünüyorum. serileştirmek için

+2

Sorun boost :: serialization çerçeve bir boost :: shared_ptr serileştirmek için izin veren bir "boost/serialization/shared_ptr.hpp" başlık dosyası sağlar ve bu oldukça çalışır Will (denedim). Sorun şu ki, std :: shared_ptr dizilimine sahip olduğum std :: shared_ptr ve std :: shared_ptr dosyasını işleyen boost :: serialization lib dosyasında özel bir başlık yok. Bu yüzden bir başkasının std :: shared_ptr serisini seri hale getirip getirmediğini öğrenmek istedim. – denim

İlgili konular