Я использую Expat для чтения XML-файла.Я хочу заполнить некоторые из моих переменных-членов класса из конфигурации, указанной в XML-файле.Я определил свой обработчик начального элемента,
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];
}
.........
Тогда я делаю myclass.sInputName = g_stConfigInfo.sInputname
Я бы предпочел не использовать глобальную переменную, вместо того, чтобы иметь возможностьчтобы сделать это функцией-членом класса, чьи переменные-члены должны быть заполнены.Я также не хочу иметь экземпляр этого класса внутри Start ().Какой лучший способ сделать это?