ブーストシリアル化ライブラリをテストするための小さなサンプルを作成しましたが、コンパイルの問題があります。ブーストシリアル化のコンパイルエラー
まず第一に、ここでのコードは次のとおりです。
#include <iostream>
#include <fstream>
#include <iomanip>
#include <boost/filesystem/operations.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/version.hpp>
std::vector<uint8_t> buf;
class MyClass
{
public:
MyClass(){};
virtual ~MyClass(){};
int assetStatus;
friend class boost::serialization::access;
template<typename Archive> void serialize(
Archive & ar,
const unsigned int version)
{
ar & BOOST_SERIALIZATION_NVP(assetStatus);
}
std::string ToString()
{
std::string toret;
toret += " assetStatus: " + assetStatus;
return toret;
}
};
int main()
{
MyClass a, b;
a.assetStatus = 10;
std::cout << a.ToString();
boost::archive::xml_oarchive ooxml(std::ofstream(dbPath));
ooxml << BOOST_SERIALIZATION_NVP(a); // error here
MyClass d;
boost::archive::xml_iarchive iixml(std::ifstream(dbPath));
iixml >> BOOST_SERIALIZATION_NVP(d); // error here
std::cout << d.ToString();
}
私はラインでコンパイルエラーが発生します:
ooxml << BOOST_SERIALIZATION_NVP(a);
と
iixml >> BOOST_SERIALIZATION_NVP(d);
エラーは次のとおりです。
'iixml >> boost::serialization::make_nvp(const char*, T&) [with T=MyClass(((MyClass&)(&d)))]'
でoperator>>
ための一致なしあなたはこの意味について任意のアイデアを持っていますか?
ええ、コピー/貼り付け時にその部分を忘れましたが、コード内で定義されていました。他の部分に関しては、私はすでにその方法でそれを変更し、それが正しい解決策であることを知ったが、違いがどちらであるか分からない... – cpl