Re: Делегаты на C++
От: Anton_86 Украина  
Дата: 25.11.08 15:41
Оценка:
Здравствуйте, Александр Шаргин, Вы писали:

К сожалению данный код не работает корректно в VS2008:

Ваш код:

for(it = m_DelegateList.begin(); it != --m_DelegateList.end(); ++it)
       static_cast<IDelegate*> (*it)->Invoke(ARGS);


Мне пришлось поменять на


if ( !m_DelegateList.empty() )
{
    for(it = m_DelegateList.begin(); it != --m_DelegateList.end(); ++it)
       static_cast<IDelegate*> (*it)->Invoke(ARGS);
}


так как рантайм VS2008 выбрасывает исключение нарушения границ доступа при попытке декрементировать итератор который возвращен методом end().
Best Regards. Anton.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.