Заполните структуры C ++ POD из событий SAX Parser - PullRequest
1 голос
/ 02 июня 2009

Я пытаюсь использовать код StructSerlialiser, указанный в Как лучше всего использовать указатель на члены и функции-члены? После заполнения FieldBinderList как мне получить доступ к указателю на член со списком базовых классов? Мне нужно сделать это, если я хочу установить в этом поле значение, считываемое из файла XML.

1 Ответ

1 голос
/ 26 июня 2009

Когда создается StructSeriliser, ему передается экземпляр объекта, соответствующий ему, и он создает сериализаторы для каждого поля:

StructSerialiser (T* data)
    : SerialiserData (data)
{
    if (fieldBinderList_.empty ())
        Serialiser<T>::initialise ();

    typedef FieldBinderList::const_iterator Iter;
    for ( Iter iter = fieldBinderList_.begin ()
        ; iter != fieldBinderList_.end ()
        ; ++iter
        )
    {
        serialisers_.push_back
            ( SerialiserEntry
                ( (*iter)->tags_
                , (*iter)->createSerialiser (*data)
                )
            );
    }
}

Затем, когда сериализатору передается начальный элемент, он передает его следующему соответствующему полевому сериализатору.

Если честно, оригинальный фрагмент кода не предназначен для самостоятельного использования. Полный код этого класса содержит более 500 строк, а также есть сериализаторы для примитивов, опций и вариантов выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...