Re: COM-коллекции
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 26.05.03 04:52
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

_>Подскажите пожалуйста: переделывал стандартный пример из Трельсена, ввел поле ID. Хотелось бы чтобы элемент коллекции удалялся не с определенными номером, а шел поиск по ID и элемент с нужным ID удалялся. Вот листинг самой функции удаления. Как мне сделать цикл по всем элементам? (я ввел для элемента функцию get_obj, котора одним из параметров выдает этот ID).


В качестве элемента вектора заводишь структуру
struct _item
{
   IDispatch* pDisp;
   long lId;
};


Удаление:
STDMETHODIMP CSquiggleCollection2::Remove(long lId)
{
    // Be sure we are in range.
    for(int i = 0; i < m_vecSquiggles.size();i++)
    {
        // Find the correct squiggle.
        if (m_vecSquiggles[i].lId == lId){
            IDispatch* pDisp = m_vecSquiggles[i];
            pDisp->Release();
            m_vecSquiggles.erase(m_vecSquiggles.begin() + i);
            return S_OK;
        }
    }
    return E_FAIL;
}


Это нужно еще Advise немного переделать.
А вообще, такие вещи на map'е делать — самое то!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.