boost serialization
От: KosTiger Россия  
Дата: 03.08.06 14:52
Оценка:
Целый день бьюсь с 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
Re: boost serialization
От: KosTiger Россия  
Дата: 03.08.06 15:03
Оценка:
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’
Re: boost serialization
От: KosTiger Россия  
Дата: 03.08.06 15:17
Оценка:
KT>Целый день бьюсь с boost serialization — безрезультатно

KT>Помогите дураку!


И еще одна интересная вещь — если закомментировать этот макрос
//BOOST_SERIALIZATION_TRACKING(DataManagement::OTCData, boost::serialization::track_never)


То ошибка вылетает в другом месте:

Код:
void DataManagement::DataController::save_otcdata(const OTCData& data)
    {
        std::string file_name=set_file_name(data);
        std::ofstream    ofs(file_name.c_str());
        boost::archive::text_oarchive oa(ofs);
        oa << data; // Ошибка компилятора, которую даже приводить не стоит - слишком длинные сообщения.
        // в общем, сообщения похожи на те, что выдает компилятор при попытке сохранить неконстантный объект
    }


Re: boost serialization
От: remark Россия http://www.1024cores.net/
Дата: 06.08.06 09:42
Оценка:
Здравствуйте, KosTiger, Вы писали:

KT>Целый день бьюсь с boost serialization — безрезультатно


KT>Помогите дураку!


KT>Запарился читать английские доки — все равно там практически ничего не описано...


KT>Что не так? Этот замечательный BOOST_SERIALIZATION_TRACKING нигде не описан, а вывод препроцессора он выглядит точно также, как и в сорсах.



Каким архивом сериализуешь?



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: boost serialization
От: Dmitry Kotlyarov Россия  
Дата: 08.08.06 13:30
Оценка:
Здравствуйте, 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’

Лучше упростить код до минимально возможного и привести здесь исходник целиком. Тогда бцдет проще понять, в чем твоя проблема.
Re: boost serialization
От: IceStudent Украина  
Дата: 10.08.06 08:59
Оценка:
Здравствуйте, KosTiger, Вы писали:

KT>Запарился читать английские доки — все равно там практически ничего не описано...

Написано, написано.

KT>Код:

KT>BOOST_SERIALIZATION_TRACKING(DataManagement::OTCData, boost::serialization::track_never)
Ты не сериализуешь указатели, зачем tracking?

KT>>Ошибка компилятора, которую даже приводить не стоит — слишком длинные сообщения. в общем, сообщения похожи на те, что выдает компилятор при попытке сохранить неконстантный объект

Поиграйся в отдельном тесте, так легче найти ошибку.
Re[3]: boost serialization
От: KosTiger Россия  
Дата: 15.09.06 07:10
Оценка:
Здравствуйте, 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>Лучше упростить код до минимально возможного и привести здесь исходник целиком. Тогда бцдет проще понять, в чем твоя проблема.


У меня переходный период, времени не хватает. Как появится — выставлю упрощенный код.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.