Целый день бьюсь с boost serialization — безрезультатно
Помогите дураку!
Запарился читать английские доки — все равно там практически ничего не описано...
Код:
#include <boost/serialization/tracking.hpp>
#include <boost/serialization/split_member.hpp>
namespace DataManagement
{
class OTCData : public IOTCData
{
friend class boost::serialization::access;
template<class Archive>
void save(Archive & ar, const unsigned int version) const
{
const std::string own_id=m_own_id->save_to_string();
ar & own_id;
const std::string header_id=m_header_id->save_to_string();
ar & header_id;
ar & m_rows;
ar & m_cols;
}
template<class Archive>
void load(Archive & ar, const unsigned int version)
{
std::string own_id;
std::string header_id;
ar & own_id;
m_own_id->load_from_string(own_id);
ar & header_id;
m_header_id->load_from_string(header_id);
ar & rows;
ar & m_cols;
}
BOOST_SERIALIZATION_SPLIT_MEMBER();
std::auto_ptr<OTCDataID> m_own_id;
std::auto_ptr<OTCDataHeaderID> m_header_id;
std::vector<OTCRow> m_rows;
int m_cols;
const IOTCDataHeader * m_header;
...
};
}
BOOST_SERIALIZATION_TRACKING(DataManagement::OTCData, boost::serialization::track_never)
Что не так? Этот замечательный BOOST_SERIALIZATION_TRACKING нигде не описан, а вывод препроцессора он выглядит точно также, как и в сорсах.
09.08.06 06:58: Перенесено модератором из 'C/C++' — Odi$$ey
KT><skipped>
KT>BOOST_SERIALIZATION_TRACKING(DataManagement::OTCData, boost::serialization::track_never)
KT>
Ну вот, совсем голова уже не варит, даже забыл сказать, в чем проблема — ошибка компилятора (gcc 4.0) как раз на этом макросе:
/home/jkflds/src/OTCData.h:222: error: ‘boost::serialization::track_never’ is not a type
/home/jkflds/src/OTCData.cpp:3: error: expected constructor, destructor, or type conversion before ‘namespace’
Здравствуйте, KosTiger, Вы писали:
KT>Ну вот, совсем голова уже не варит, даже забыл сказать, в чем проблема — ошибка компилятора (gcc 4.0) как раз на этом макросе:
KT>/home/jkflds/src/OTCData.h:222: error: ‘boost::serialization::track_never’ is not a type
KT>/home/jkflds/src/OTCData.cpp:3: error: expected constructor, destructor, or type conversion before ‘namespace’
Лучше упростить код до минимально возможного и привести здесь исходник целиком. Тогда бцдет проще понять, в чем твоя проблема.
Здравствуйте, KosTiger, Вы писали:
KT>Запарился читать английские доки — все равно там практически ничего не описано...
Написано, написано.
KT>Код:
KT>BOOST_SERIALIZATION_TRACKING(DataManagement::OTCData, boost::serialization::track_never)
Ты не сериализуешь указатели, зачем tracking?
KT>>Ошибка компилятора, которую даже приводить не стоит — слишком длинные сообщения. в общем, сообщения похожи на те, что выдает компилятор при попытке сохранить неконстантный объект
Поиграйся в отдельном тесте, так легче найти ошибку.
Здравствуйте, Dmitry Kotlyarov, Вы писали:
DK>Здравствуйте, KosTiger, Вы писали:
KT>>Ну вот, совсем голова уже не варит, даже забыл сказать, в чем проблема — ошибка компилятора (gcc 4.0) как раз на этом макросе:
KT>>/home/jkflds/src/OTCData.h:222: error: ‘boost::serialization::track_never’ is not a type
KT>>/home/jkflds/src/OTCData.cpp:3: error: expected constructor, destructor, or type conversion before ‘namespace’
DK>Лучше упростить код до минимально возможного и привести здесь исходник целиком. Тогда бцдет проще понять, в чем твоя проблема.
У меня переходный период, времени не хватает. Как появится — выставлю упрощенный код.