Question

J'ai un code que je veux construire. Le code utilise la classe boost :: ptr_map pour sérialiser certains objets. J'ai Visual Studio 2008 avec boost1.38 et je reçois l'erreur suivante du compilateur. Je me demande si quelqu'un a d'autre vu quelque chose comme ça.

C2039: 'serialize': n'est pas membre de 'boost :: ptr_map'

On dirait une référence manque et je me demande ce qu'elle est, je ne vois pas de coup de pouce / sérialisation / ptr_map. J'ai googlé beaucoup et rien n'a prouvé être viable. J'ai créé un exemple de code qui génère la même erreur ci-dessous

#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;
}

Toute aide est appréciée.

Était-ce utile?

La solution

On dirait qu'il ya un boost/ptr_container/serialize_ptr_map.hpp, qui est sans doute important de #include.

Autres conseils

Peut-être tout simplement pas le soutien de sérialisation pour boost :: ptr_map? Les libs Boost ne sont pas entièrement connectés de cette façon. Essayez de demander à la liste boost-mail.

Cependant, l'écriture d'une fonction à une sérialisation ptr_map devrait être assez facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top