2009-07-13 3 views
0

나는 텍스트를 직렬화하고 C++에서 추상 객체의 컨테이너를 포함하는 객체를 역 직렬화하려고 시도하지만 위의 코드 예제를 아는 사람이 있습니까?C++에서 추상 객체의 컨테이너를 포함하는 객체를 직렬화 및 비 직렬화하는 방법은 무엇입니까?

당신은라는 추상 클래스 방법을 만들 수
+0

추상 개체 란 무엇입니까? 추상 클래스는 객체를 인스턴스화 할 수없는 클래스이므로 "추상적 객체"라는 용어는 나에게 놀라운 것입니다. –

+0

저는 그것이 컨테이너와 오브젝트 자체에 의존한다고 생각합니다. 내 이해에서 당신은 개체를 serialize 할 수 있도록 각 개체를 serialize 할 수 있어야합니다. IE : 컨테이너를 직렬화하는 개체를 직렬화합니다. 컨테이너에 포함 된 각 개체를 직렬화합니다. – dborba

+0

@Daniel - 그가 의미하는 바는 컨테이너가 포함하고있는 객체의 유형을 컨테이너가 알지 못한다는 것입니다. 그러나 나는 틀릴 수도 있습니다. – dborba

답변

1

:

virtual void serialize(char *out, int outLen) = 0; 

.. 차례로 정적 디시리얼라이저 :

하여 디시리얼라이저에서
AbstractClass deserialize(char *serializedString, int strLen); 

, 당신이를 역 직렬화하는 다양한 전략을 가질 수있다 추상 클래스의 오른쪽 서브 클래스

3

boost::serialize을 살펴보십시오.

여기에는 serialization of containers을 돕기위한 방법이 포함되어 있습니다 (링크가 왼쪽에서 프레임을 잃어 버림).

물론, 해당 페이지로 건너 뛰지 마십시오. 전체 내용을 읽는 것이 좋습니다. :)

1

안녕하세요, 비슷한 질문을 조금 전부터 받았습니다. 특히 훌륭한 dribeas의 대답을보십시오. 이 메서드는 추상 형식의 새 객체를 추가 할 때 기존 코드를 거의 조작하지 않을 수 있습니다 (예 : 디시리얼라이저의 옵션을 사용하면 추가 스위치를 사용하지 않고 직렬화 할 수 있음).

Best Practice For List of Polymorphic Objects in C++

관련 문제