1
serialization 프로세스 중에 "TestSerialize"클래스에서 메서드를 호출하려고하면 다음과 같은 문제가 있습니다. 나는 발생한 오류가 Boost.Serialization : 직렬화 과정에서 클래스 메서드 호출시 오류가 발생했습니다.
class TestSerialize
{
public:
std::string GetVal() { return Val + "abc"; }
void SetVal(std::string tVal) { Val = tVal.substr(0, 2); }
protected:
std::string Val;
friend class boost::serialization::access;
template<class Archive> void save(Archive & ar, const unsigned int version) const
{
using boost::serialization::make_nvp;
std::string tVal = GetVal(); // Error here
ar & make_nvp("SC", tVal);
}
template<class Archive> void load(Archive & ar, const unsigned int version)
{
using boost::serialization::make_nvp;
std::string tVal;
ar & make_nvp("SC", tVal);
SetVal(tVal);
}
BOOST_SERIALIZATION_SPLIT_MEMBER();
};
int main()
{
TestSerialize tS;
std::ofstream ofs("test.xml");
boost::archive::xml_oarchive oa(ofs, boost::archive::no_header);
oa << BOOST_SERIALIZATION_NVP(tS);
ofs.close();
return 0;
}
입니다
: 'TestSerialize :: GETVAL' 'TestSerialize &'에 'const를 TestSerialize'에서 '이'포인터를 변환 할 수 없습니다 여기 내 코드입니다이 오류는 "저장"하지만 "로드"하지 않는 경우에만 발생합니다.
왜이 오류가 발생하는지 궁금합니다. 나는 Boost.Serialization이 우리가이 두 가지 다른 행동을 갖도록하는 것을 알고 싶습니다. 내가 부스트 라이브러리를 사용 1.47.0