У меня есть COM контрол. Внутри него я создаю массив COM объектов через CAtlArray< CComPtr<..>>, сами COM обхъекты для этого массива создаю через CoCreateInstance и заношу в масисв через Add
Каждый элемент этого массива может быть запрошен извне через функцию GetElement(IUnknown** pntr). Этот возврат я делаю прочсто через присвоение pntr к указателю на элемент моего массива
Так вот. В конце, если я делаю на моем массиве RemoveAll — то все падает
Где закралась ошибка? Неправильно заполняю массив или неправльно отдаю наверх его елементы?
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, migel, Вы писали:
M>>Аха значит это 2008 студия А>Да
M>>ну тогда делай M>>CopyTo(...)
А>Это откуда? Чей метод? Копировать что и куда?
HRESULT CComPTRBase<T>::CopyTo(T** ppT);
то есть твой метод возвращения элемента коллекции должен делать вот так
// предположительно
HRESLT MyCollectionObj::get_Item(VARIANT index, IUnknown** ppItem)
{
// Проверки параметров опущеныint index_in = GetIndex(index); // получаем индекс из варианта
CComPtr<IUnknown>& spObj = my_vector[index_in]; // берем ссылку из коллекции
// возвращаем объект и делаем AddRefreturn spObj.CopyTo(ppItem);
}