Ошибка сериализации в C ++ Boost ptr_map - PullRequest
2 голосов
/ 11 июня 2009

У меня есть код, который я хочу построить. Код использует класс boost :: ptr_map для сериализации определенных объектов. У меня Visual Studio 2008 с boost1.38, и я получаю следующую ошибку от компилятора. Интересно, видел ли кто-нибудь что-нибудь подобное?

C2039: 'serialize': не является членом 'boost :: ptr_map'

Похоже, что какая-то ссылка отсутствует, и мне интересно, что это такое, я не вижу никаких boost / serialization / ptr_map. Я много гуглил и ничего не оказалось жизнеспособным. Я создал пример кода, который генерирует ту же ошибку ниже

#include <fstream>
#include <iostream>


#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/config.hpp>

#include <boost/shared_ptr.hpp>
#include <boost/ptr_container/ptr_map.hpp>

#include <boost/serialization/string.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/split_member.hpp>

using namespace std;

class User
{
    boost::ptr_map<std::string, string> ptrmap;

public:

    friend class boost::serialization::access;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & ptrmap;
    }

    bool save(const std::string& filename)
    {
        ofstream ofs(filename.c_str());

        if(ofs.good() == false)
        {
            return false;
        }

        try
        {
            boost::archive::text_oarchive oa(ofs);
            oa << (*this);
        }
        catch(...)
        {
            throw;
        }

        return true;
    }
};


int main()
{
    User user;
    user.save("C:\\test.db");
    return EXIT_SUCCESS;
}

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 11 июня 2009

Похоже, что есть boost/ptr_container/serialize_ptr_map.hpp, что, вероятно, важно для # include.

0 голосов
/ 11 июня 2009

Может, просто нет поддержки сериализации для boost :: ptr_map? Boost libs не полностью связаны таким образом. Попробуйте спросить в списке рассылки.

Однако написание функции для сериализации ptr_map должно быть довольно простым.

...