2011-08-07 4 views
0

야 그래서 내가 부스트가 자동으로 당신이 그것을 가리키는 것 객체의 직렬화 기능을 정의한로 포인터를 직렬화 이해하지만는 오버라이드 (override)하는 방법 무슨

myClass pointer 걸리는 부스트 직렬화 함수를 작성하려면 어떻게해야합니까?

내가 가리키는 대상을 저장하고 그 포인터를 가리 키도록 기본 동작을 수행하고 싶지 않습니다. 나는 뭔가 다른 일을하기 위해서 부스트를 원한다.

어쩌면 당신은 직렬화를 (조정 가능) 모든 구조체의 방법/당신의 myClass가 포인터를 포함하는 클래스 : 당신은 당신의 특별한 클래스의 일반 포인터 직렬화와 다른 동작을해야하는 경우

+1

포인터를 역 참조 할 수없는 이유가 있었습니까? 아니면 누락 된 것이 있습니까? –

+1

"무언가 다른"무엇이 그 사건에서 serialize 기능을 원합니까? 각 멤버의 직렬화를 제어하므로 단순히 포인터를보고 아카이브로 전달하는 대신 "다른 것"을 수행 할 수 있습니까? –

답변

1

, 당신은 두 가지 옵션이 있습니다 당신이 원하는 행동을 성취하기 위해서. 그러나 주위에 많은 포인터가 있다면이 옵션이되지 않습니다. 또 다른 가능성은 http://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/index.html (myClass 포인터 용으로 작성)에 설명 된대로 무료 함수를 사용하는 것일 수 있습니다.

다른 옵션은 두 개 이상의 아카이브 유형 (예 : 바이너리 아카이브)을 사용하는 경우에만 작동합니다. 아카이브 클래스에서 파생되고 save (및 load) 메소드에 대한 오버로드를 추가 할 수 있습니다.

+0

예 제가 생각한 두 번째 옵션이 붙어 있습니다. 어떻게하는지에 대한 자세한 정보에 대한 링크/왜 내가 하나의 아카이브로 만 할 수있는 이유는 무엇입니까? – Griffin

+0

debbugger를 사용하여 작업중인 아카이브에서 메소드 호출을 수행하는 것이 좋습니다. 그러나 하나 이상의 아카이브에 필요하면 옵션 1을 선택하십시오. (정확히 무엇을하고 싶은지 지정할 수 있습니까?) – Philipp