0
我想實現一個序列化的類(現在是XML)。這個想法是任何派生類都可以用基類註冊它的成員,並且基類可以用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和字符*很容易,但如何做到這一點的IXMLINF派生類的載體在一個通用的方法(VEC是VEC不同類型)
一種可能的方式可能是
<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信息(類型= T步)或任何替代方法來做我想做的事情的任何建議。