Я использую expat для чтения xml-файла. Я хочу заполнить некоторые из моих переменных-членов класса из конфигурации, указанной в XML-файле. Я определил мой StartElement обработчик,using expat startelement handler C++
void Start(void *data,const XML_Char *el, const XML_Char **attr)
и это будет ссылаться следующим образом:
XML_SetElementHandler(parser,Start, NULL);
В настоящее время я использую глобальную структуру, g_stConfigInfo
хранить все значения в Start()
Например,
void Start(void *data,const XML_Char *el, const XML_Char **attr)
{
if(_tcscmp(el,_T("blah"))==0)
{
for (int i=0; attr[i]; i+=2)
{
if(_tcscmp(attr[i],_T("name"))==0)
{
g_stConfigInfo.sInputName = attr[i+1];
}
.........
Тогда я делаю ing myclass.sInputName = g_stConfigInfo.sInputname
Я бы предпочел не использовать глобальную переменную, вместо этого сделать это функцией-членом класса, чьи переменные-члены должны быть заполнены. Я также не хочу иметь экземпляр этого класса внутри Start(). Каков наилучший способ сделать это?
Я обычно делал то же самое без шаблонов. Это делает его намного чище. +1 – Ferruccio