0
私はオブジェクトを記録するためにboost :: serializationを使う方法を学ぼうとしています。例えば、私は、オブジェクトをシリアル化するために、次のコードを使用しています:boost :: serializationのnvpラッパーを指定する方法は?
struct Abc
{
int a;
float b;
double c;
};
namespace boost
{
namespace serialization
{
template <typename Archive>
void serialize(Archive& ar, Abc &obj,const unsigned int version)
{
ar & BOOST_SERIALIZATION_NVP(obj.a);
ar & BOOST_SERIALIZATION_NVP(obj.b);
ar & BOOST_SERIALIZATION_NVP(obj.c);
};
}
};
Abc kkk;
std::ofstream ofs(tmpFile);
boost::archive::xml_oarchive ar(ofs);
ar & kkk;
ofs.close();
を私はコードをコンパイルするときしかし、私は次のコンパイル・エラーがあります。
Error 1 error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1 from 'boost::mpl::failed ************boost::serialization::is_wrapper<T>::* ***********' to 'boost::mpl::assert<false>::type' \boost_1_50_0\boost\archive\basic_xml_oarchive.hpp 92
エラーメッセージがソースにつながりますブーストコード:
template<class T>
void save_override(T & t, BOOST_PFTO int)
{
// If your program fails to compile here, its most likely due to
// not specifying an nvp wrapper around the variable to
// be serialized.
BOOST_MPL_ASSERT((serialization::is_wrapper<T>));
this->detail_common_oarchive::save_override(t, 0);
}
アイデアをお持ちですか?ありがとう。