boost :: serialization을 사용하면 변경 가능한 멤버에 캐시 된 파생 값이 들어있는 객체를 직렬화하는 "최상의"방법은 무엇입니까?변경할 멤버가있는 boost :: serialization
class Example
{
public:
Example(float n) :
num(n),
sqrt_num(-1.0)
{}
// compute and cache sqrt on first read
float get_sqrt() const
{
if(sqrt_num < 0)
sqrt_num = sqrt(num);
return sqrt_num;
}
template <class Archive>
void serialize(Archive& ar, unsigned int version)
{ ... }
private:
float num;
mutable float sqrt_num;
};
유지 보수를 위해 serialize()를 별도의 save() 및 load() 메서드로 분리하지 마십시오. 직렬화의
하나의 최적 구현 :
template <class Archive>
void serialize(Archive& ar, unsigned int version)
{
ar & num;
sqrt_num = -1.0;
}
이 역 직렬화 케이스를 처리하지만, 직렬화의 경우, 캐시 된 값을 살해하고 다시 계산해야합니다.
이 경우 가장 좋은 방법은 무엇입니까?
와우, 질문을 한 지 3.5 년 후에 답변! –