Longobard
написал 6 августа 2004 года в 10:57 (811 просмотр)
Ведет себя
как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.
Сегоня нашел баг в классе конфиге (не парсер а обьект конфига именно моей проги). Итак есть такая вот лабудень (сократил я ее для упрощения вашей мыслительной деятельности):
void FL_Config::HandleVhostOpts( list < struct element > * tree, struct VhostOpts * vhost ) { string tag, arg; const int RequiredParamsNum = 2, OptionalParamsNum = 2; struct ParamPairs { string param; void * OutPointer; } RequiredParams[RequiredParamsNum] = { { FL_VHOST_ROOT, & vhost->VhostRoot }, { FL_VHOST_DOC_ROOT, & vhost->VhostDocRoot } }, OptionalParams[OptionalParamsNum] = { { FL_VHOST_ILIMIT, & vhost->InputLimit }, { FL_VHOST_OLIMIT, & vhost->OutputLimit } }; while ( !tree->empty() ) { list < struct element >::reference ref = tree->front(); tag = ref.tag; arg = ref.arg; for ( int i = 0; i < RequiredParamsNum; i++ ) { if ( tag == RequiredParams[i].param ) { //Воть где-та тут трабла! if ( ((string*) RequiredParams[i].OutPointer )->length() <= 0 ) *((string*) ( RequiredParams[i].OutPointer )) = arg; else { cerr << *( (string*)( RequiredParams[i].OutPointer )) << " may be set only once!\n"; HasErrors = true; } } } for ( int i = 0; i < OptionalParamsNum; i++ ) { if ( tag == OptionalParams[i].param ) { if ( ((string*)( OptionalParams[i].OutPointer ))->length() <= 0 ) { * ((string*)( OptionalParams[i].OutPointer )) = arg; } else { cerr << * ((string*)( OptionalParams[i].OutPointer )) << " may be set only once!\n"; HasErrors = true; } } } tree->pop_front(); } for ( int i = 0; i < RequiredParamsNum; i++ ) if ( ((string*) RequiredParams[i].OutPointer )->length() <= 0) { cerr << * ((string*) ( RequiredParams[i].OutPointer )) << " must be set!\n"; HasErrors = true; } }
Короче мне нада получить доступ к обьекту RequiredParams.OutPointer. Дело в том что часть этих обьектов — string, часть — обьекты других классов, поентому он имеет тип void*. Вопщема у меня строка *( (string*)( RequiredParams.OutPointer )) вместо нужного элемента (которые является строкой, опеределенной в хидере через #define) содержит пустую строку. Короче че-та я намудрил с указателями и преобразованиями :) Помогите плз :)
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Ой короче меня проглючило, нифига я не намудрил, просто перепутал поля структуры и дефайны блин :) Короче тема снята :) Пойду ка я посплю чутка….