質問

私が構築したいいくつかのコードを持っています。コードは、特定のオブジェクトをシリアル化するために、ブースト:: ptr_mapクラスを使用しています。私はboost1.38でのVisual Studio 2008を持っていると私は、コンパイラから次のエラーを取得しています。他のいずれかがこのような任意のものを見ているのだろうか。

C2039: 'シリアル化': '後押し:: ptr_map' のメンバではありません。

は、いくつかの参照が不足していると私はそれが何であるか疑問に思うように、私は任意のブースト/シリアライズ/ ptr_mapが表示されないルックス。私は多くのことをGoogleで検索していると、何も実行可能であることが証明されていません。私は

以下同じエラーが発生したサンプルコードを作成しました
#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;
}

すべてのヘルプは高く評価されます。

役に立ちましたか?

解決

おそらくの#includeに重要であるboost/ptr_container/serialize_ptr_map.hppが、そこにあるように、

に見えます。

他のヒント

多分ちょうどブースト:: ptr_mapの直列化のサポートはありませんでしょうか?ブーストLIBSは完全にそのように接続されていません。ブーストメールリストに尋ねてみます。

しかし、ptr_mapをシリアライズする関数を書くことは、かなり簡単にする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top