Здравствуйте, ef1, Вы писали:
ef1>Не подскажете, запутался:
ef1>в своем классе определяю лист
ef1>ef1>typedef std::list<CAcadDocumentWrapper> lDocumentsList;
ef1> lDocumentsList mListDocs;
ef1>typedef std::list <CAcadDocumentWrapper>::iterator Iter;
ef1> Iter IterDocs;
ef1>typedef std::list <CAcadDocumentWrapper>::const_iterator ConstIter;
ef1> ConstIter pIterADoc;
ef1>
И зачем typedef, если все равно им не пользуешься?
ef1>в листе храняться врапперы COM интерфейса Document сервера AutoCAD, и в моем классе есть функция работающая с этим листом
ef1>ef1>void CMyAutoCAD::Refresh()
ef1>{
ef1>...
ef1> if (!mListDocs.empty())
ef1> {
ef1> for (pIterDocs = mListDocs.begin(); pIterDocs != mListDocs.end(); pIterDocs++ )
ef1> {
ef1> if (pIterDocs!=pIterADoc)
ef1> mListDocs.erase(pIterDocs); //После erase, pIterDocs больше некорректен, и делать с ним ничего нельзя, в т.ч. инкремент.
ef1> }
ef1> }
ef1>
else
ef1>...
ef1>
ef1>и получается когда я вызываю функцию Refresh() из своего (родительского) класса — все работает массив заполняется/удаляется/имеет размер, а когда я затем вызываю ее-же из класса (определеного в родительском как указатель на класс обрабатывающий события сервера) через указатель на родительский — list оказывается неинициализирован и работать с ним нельзя, а почему?? (вылетает уже на строчке с проверкой листа на то что он не пустой)
Исправь Refresh (см. комментарий в коде), если не поможет, приведи минимальный код с проблемой.
The last good thing written in C was Franz Schubert's Symphony No. 9.