2

我有一些想要构建的代码。该代码使用 boost::ptr_map 类来序列化某些对象。我有带有 boost1.38 的 Visual Studio 2008,我从编译器收到以下错误。我想知道有没有其他人见过这样的事情。

C2039:“序列化”:不是“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;
}

任何帮助表示赞赏。

4

2 回答 2

2

看起来有一个boost/ptr_container/serialize_ptr_map.hpp,这可能对#include 很重要。

于 2009-06-10T22:07:27.880 回答
0

也许 boost::ptr_map 没有序列化支持?Boost 库并没有以这种方式完全连接。尝试在 boost-mail 列表中询问。

但是,编写一个函数来序列化 ptr_map 应该很容易。

于 2009-06-10T21:47:43.583 回答