我需要序列化一個簡單的結構,其中有一個void *類型的指針,但是當我序列化它給出錯誤「C2338:boost :: serialization :: tracking_level < T>: :value!= boost :: serialization :: track_never「指向第167行處的shared_ptr.hpp。以下是密碼無效提升序列化*指針類型不編譯
#include <boost/serialization/access.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/optional.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/shared_ptr.hpp>
struct Man
{
Man();
virtual ~Man();
std::list<boost::shared_ptr<void *>> condition;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & condition; // if i comment this line.. issue goes away..
}
};
struct SuperMan
{
public:
SuperMan(void);
SuperMan(const parameter_strings & parms);
virtual ~SuperMan(void);
boost::optional<anyURI> detail;
boost::optional<SuperManInfo> SuperMan_info;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & SuperMan_info;
ar & detail;
}
};
是否真的提升了支持void *指針的序列化,如果是的話......是成員變量以錯誤的方式進行了批判?
假設這是你的真實代碼:如果你想能夠序列化該變量,你必須以某種方式告訴boost :: serialization void *實際上指向的是什麼。從序列化的角度來看,它是一個通用指針,它不知道如何處理它。如果這是一個例子(我希望它,因爲'shared_ptr'是一個可怕的想法),那麼我們需要更多的信息。 –