Допустим у меня есть COM-класс который наследуется от IDispEventImpl
class CPaneTopT :
...
public IDispEventImpl<1, T, &DIID__IRSSink, &LIBID_P4Lib,
P4TypeLibMajorVersion, P4TypeLibMinorVersion>,
...
и у меня есть вектор однотипных объектов каждый из которых может возбуждать события интерфейса _IRSSink. В своём классе CPaneTopT я описываю SINK_MAP
...
BEGIN_SINK_MAP(T)
SINK_ENTRY_EX(1, DIID__IRSSink, 1, onObjectsAdded)
SINK_ENTRY_EX(1, DIID__IRSSink, 2, onObjectsRemoved)
SINK_ENTRY_EX(1, DIID__IRSSink, 3, onObjectsReplaced)
SINK_ENTRY_EX(1, DIID__IRSSink, 4, onAllObjectsRemoved)
SINK_ENTRY_EX(1, DIID__IRSSink, 5, onObjectChanged)
END_SINK_MAP()
...
И теперь мне хочеться подписать мой класс на события объектов в вышеназванном векторе. Просто вызывать последовательно DispEventAdvise для каждого объекта, не работает. там возникает assert, что cookie внутри IDispEventAdvise содержит корректное значение и сначало нужно отписаться от событий объекта. Есть конечно мысль вопользоваться AtlAdvise и хранить у себя вектор соответствующих cookie, но тогда мне кажется не будут вызываться методы описанные в SINK_MAP. (или всё-таки будут?, просто долго достаточно переделывать всё и хочу заранее быть уверенным, что всё будет работать) Вообщем кто сталкивался с такой ситуацией, может знаете как сделать так что бы было лучше всего