2010-11-25 3 views
0

직렬화 (XML for now) 클래스를 구현하려고합니다. 아이디어는 모든 파생 클래스가 멤버를 기본 클래스에 등록 할 수 있고 기본 모듈을 XML 형식으로 작성할 수 있다는 것입니다.템플릿 벡터의 타입 정보를 저장하는 방법

코드는 지금까지 너무 좋은이

class IXMLINF 
{ 

protected: 

struct INFObj 
{ 
union MemPtr 
{ 
    int* piMem; 
    char* pstrMem; 
    IXMLINF* pINFMem; 
} 

MemPtr memObj; 
}; 

vec<INFObj*> m_INFObjVec; 
void addMemToINF(int* piMem) 
{ 
INFObj* pObj = new INFObj; 
pObj->memObj.piMem = piMem; 
m_INFObjVec.append(pObj); 
} 
void addMemToINF(char* pstrMem); 
void addMemToINF(IXMLINF* pINFMem); 

void writeToXML() 
{ 
for_each_element_in_m_INFObjVec 
{ 
//if int or char process to XML 
//else if IXMINF call its writeToXML 
} 
} 
} 

같이 보입니다. 그러나 나는 또한 유형의 벡터를 XML에 쓸 수 있기를 원한다. INT와 문자를 들어 *는 쉽지만 이

한 가지 방법이 될 수

(VEC는 VEC에서 다른 유형의) 일반적인 방법으로 IXMLINF 파생 클래스의 벡터를 위해 작업을 수행하는 방법에

<class T>void addMemToINF(vec<T*>* pXMem) 
{ 

//T is a class derived from IXMLINF 
void* pvMem = (void*)pXMem 
//Somehow store type of T 

Type = T 

} 

void writeToXML() 
{ 
.... 

vec<Type*>* pVec = (vec<Type*>*)pvMem ; 

} 

나는 것 Type informatio (Type = T step) 또는 내가하고 싶은 일을 수행하기위한 다른 방법을 저장하는 방법에 대한 제안을 부탁드립니다.

답변

0

FWIW이 answer (필립 @Phillip)과 관련 질문은 약간의 조정으로이 질문에 대한 답변을 제공합니다. 아무도 원한다면 나는 그 돈을 넣을 수 있습니다.

관련 문제