C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

  ЗакрытаНовая темаНовый опрос
Приведение типов
juice
Отправлено: 04.07.2005, 17:27


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Есть такой код:

CODE

Variant oApp, oNs1;
oApp = CreateOleObject("outlook.application");
oNs1  = oApp.OleFunction("GetNameSpace", "MAPI");

IConnectionPointContainer * oContain = dynamic_cast [b]IConnectionPointContainer* [/b]( oNs1.OlePropertyGet("SyncObjects").OleFunction("Item",1) ); // Вот тут ошибка, что мол каст невозможен

Но как преобразовать вариант в IConnectionPointContainer* ? Мне дальше по ходу программы нужно работать с Item именно как с IConnectionPointContainer.

Отредактировано Gedeon — 04/07/2005, 17:38
olegenty
Отправлено: 05.07.2005, 07:53


Ветеран

Группа: Модератор
Сообщений: 2412



сначала вынь то, что находится в Variant. это либо IDispatch, либо IUnknown. потом, в зависимости от того, ЧТО ТАМ, получи указатель на нуждый тебе интерфейс. если там IUnknown, то посредством QueryInterface, если IDispatch — то его средствами.

а dynamic_cast тут близко не стоит, Variant и IConnectionPointContainer никакими родственными связями не опутаны.
juice
Отправлено: 05.07.2005, 08:55


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Угу, так оно и было

Вернуться в Вопросы программирования в C++Builder
ЗакрытаНовая темаНовый опрос