2013-04-16 2 views
1

부스트 아카이브로 직렬화하는 객체가 있습니다. 개체에는 boost::math::normal_distribution<double> distribution 유형의 멤버가 있지만 부스트는이 형식에 serialize 메서드를 제공하지 않으므로 대신 평균 및 표준 편차를 serialize합니다.부스트 serialization : 역 직렬화시 멤버 업데이트

객체가 직렬화 해제된다
template<class Archive> 
    void serialize(Archive& ar, const unsigned int version){ 
     ar & BOOST_SERIALIZATION_NVP(mean); 
     ar & BOOST_SERIALIZATION_NVP(std); 
    } 

, 나는 (기본값은 평균 0, 표준 1로 구성되어 같은) 이러한 매개 변수와 분포를 재 작성 만들고 싶어 : 내 직렬화 기능은 같다. 이 코드는 어디에 두어야합니까? 생성자에서?

감사

+1

저장 및로드 함수 (BOOST_SERIALIZATION_SPLIT_MEMBER)를 분할 할 수 있으며로드 메소드에서 평균 및 표준을 가진 후에 분배를 인스턴스화 할 수 있습니다. – Scottymac

답변

1

나는 그것이 건설의 후 값을의 설정하는 수단이 없기 때문에 normal_distribution의 현재 구현이 직렬화 생각하지 않습니다. 해결 방법은 힙에 normal_distribution를 할당하고이 여기에 설명되어 같은 대신 하나의 직렬화 기능의 보호기/로더 - 패턴을 사용 할 수

: 로더에서 http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html#splitting

당신이 새로운로드와 normal_distribution을 구성 할 수 있습니다 매개 변수.

관련 문제