2013-05-06 3 views
0

У меня есть немного проблем, пытаясь понять, почему этот кусок кода сбой при запуске функции возвращает 0;boost xml_iarchive сбой при вызове деструкторов

Я подозреваю, что когда он возвращается из функции запуска, он вызывает деструкторы для xml_iarchive, и он не работает внутри.

Мне нужно вызвать флеш или какую-нибудь функцию для очистки до xml_iarchive вызывает свои деструкторы.

Я понятия не имею, :)

// 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 
    } 

ответ

0

Оказывается, это была проблема с упаковкой, я провел целый день по этой проблеме

Смежные вопросы