Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Указатель на класс из указателя на интерфейс

5.5K
26 октября 2003 года
sergey2000
3 / / 26.10.2003
Привет,

Скажите пожалуйста как получить указатель на класс из указателя на интерфейс, т.е. допустим я имею IMyClass*, как мне узнать CMyClass*.
5.7K
26 октября 2003 года
Alex_235
4 / / 26.10.2003
Я так понимаю что речь идет об интерфейсах COM ?
В этом случае ответ никак.Дело в том , что объект предоставляющий интрефйсы в COM может быть вообще написан не на C++ и даже не на объектном языке ( теоретически ).

Цитата:
Originally posted by sergey2000
Привет,

Скажите пожалуйста как получить указатель на класс из указателя на интерфейс, т.е. допустим я имею IMyClass*, как мне узнать CMyClass*.

5.5K
26 октября 2003 года
sergey2000
3 / / 26.10.2003
Да о COM. Вообще проблема вот в чем:
Я делаю PropertyPage для ActiveX, параметр m_ppUnk[0] указывает на интерфейс этого ActiveX'а, но мне необходимо изменять некоторые свойства которые не доступны через COM интерфейс. Я знаю что можно добавить в интерфейс некоторую функцию, которая будет возвращать указатель на класс, но мне кажется что это некоректный способ. Есть ли другая возможность в PropertyPage получить указатель на класс ActiveX'a?

Цитата:
Originally posted by Alex_235
Я так понимаю что речь идет об интерфейсах COM ?
В этом случае ответ никак.Дело в том , что объект предоставляющий интрефйсы в COM может быть вообще написан не на C++ и даже не на объектном языке ( теоретически ).

5.7K
27 октября 2003 года
Alex_235
4 / / 26.10.2003
Вообще говоря в COM работа с объектом предусматривается только через интерфейсы. Если добавить в интерфейс функцию возвращающую указатель на класс , то нужно учитывать , что COM объект может существовать в другом адресном пространстве или ( теоретически ) вообще на другом компутере.И возвращенный указатель при этом будет недействителен.
Правильнее безусловно реализовать изменение свойств только через интерфейсы.

Цитата:
Originally posted by sergey2000
Да о COM. Вообще проблема вот в чем:
Я делаю PropertyPage для ActiveX, параметр m_ppUnk[0] указывает на интерфейс этого ActiveX'а, но мне необходимо изменять некоторые свойства которые не доступны через COM интерфейс. Я знаю что можно добавить в интерфейс некоторую функцию, которая будет возвращать указатель на класс, но мне кажется что это некоректный способ. Есть ли другая возможность в PropertyPage получить указатель на класс ActiveX'a?

5.5K
27 октября 2003 года
sergey2000
3 / / 26.10.2003
Оказывается способ все таки есть:

IMyClass *scr;

// так мерзко
CMyClass *dst = (CMyClass*)scr;

// так лучше, но один хрен погано
CMyClass *dst = reinerpret_cast<CMyClass*>(scr);

// так нормально
CMyClass *dst = dynamic_cast<CMyClass*>(scr);

Спасибо добрым людям, помогли:)


Цитата:
Originally posted by Alex_235
Вообще говоря в COM работа с объектом предусматривается только через интерфейсы. Если добавить в интерфейс функцию возвращающую указатель на класс , то нужно учитывать , что COM объект может существовать в другом адресном пространстве или ( теоретически ) вообще на другом компутере.И возвращенный указатель при этом будет недействителен.
Правильнее безусловно реализовать изменение свойств только через интерфейсы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог