1.요약
CRect나 CString같은 클래스는 obj2 = obj1과 같은 객체끼리 복사가 지원됩니다. 이러한 객체는 ‘=’연산자를 오버로드 했기때문에 가능한데 ‘=’연산자를 오버로드하여 적절한 처리를 하지 않으면 obj2 = obj1과 같은 객체복사를 사용할 수 없습니다.
지금 설명할려는 객체복사는 CObject로부터 상속받아 Serialize가 지원되는 객체에 해당하는 것으로 기존의 클래스를 수정없이 (‘=’연산자 오버로드 코드추가 없이) 객체의 복사본을 만드는 방법을 설명하겠습니다.
2.본문
먼저 CMemFile을 이용하여 Memory File을 하나 만들고 이것을 CArchive의 입출력(arIn, arOut)과 연결시켜 원본객체를 arIn으로 보내고 이것을 arOut으로 객체 복사본을 만들어 냅니다.
3.예제
CObject* pCopyObject;
CMemFile MemFile;
CArchive arIn(&MemFile, CArchive::store), arOut(&MemFile, CArchive::load);
arIn << pOrgObject; // 원복객체를 입력으로 보낸다. arIn.Flush(); MemFile.SeekToBegin(); arOut >> pCopyObject; // 객체 복사본을 얻는다.

댓글 남기기