0
임 시작 기능이 0을 반환 할 때 코드가 왜 충돌하는지 알아 내려고 약간의 문제가 있습니다.소멸자가 호출 될 때 부스트 xml_iarchive가 충돌합니다
나는 시작 함수에서 반환 할 때 xml_iarchive에 대한 소멸자를 호출하고 거기에서 실패하고 있다고 생각합니다.
xml_iarchive가 소멸자를 호출하기 전에 flush 또는 일부 함수를 호출해야합니다. 나는 아무 생각이
:)
// serialize
class FileLayout
{
private:
std::string m_name;
int m_datetime;
std::string m_version;
std::string m_clientpath;
int m_length;
public:
FileLayout()
{
};
FileLayout(std::string name ,int datetime,
std::string version, std::string clientpath,
int length)
{
m_name = name;
m_datetime = datetime;
m_version = version;
m_clientpath = clientpath;
m_length = length;
};
// Allow serialization to access non-public data members.
friend class boost::serialization::access;
template<typename Archive>
void serialize(Archive& ar, const unsigned version)
{
ar & boost::serialization::make_nvp("Name", m_name);
ar & boost::serialization::make_nvp("DateTime", m_datetime);
ar & boost::serialization::make_nvp("Version", m_version);
ar & boost::serialization::make_nvp("ClientPath", m_clientpath);
ar & boost::serialization::make_nvp("Length", m_length);
}
// get
std::string name()
{
return m_name;
};
int datetime()
{
return m_datetime;
};
std::string version()
{
return m_version;
};
std::string clientpath()
{
return m_clientpath;
};
int length()
{
return m_length;
};
};
int Start(std::string &data) // xml
{
// set filesize
// set name
boost::iostreams::basic_array_source<char> device(data.c_str(), data.size());
boost::iostreams::stream<boost::iostreams::basic_array_source<char> > s(device);
boost::archive::xml_iarchive ia(s,boost::archive::no_header);
ia >> BOOST_SERIALIZATION_NVP(filelayout);
data.clear();
return 0; // fails here
}