Указатель на класс из указателя на интерфейс
Скажите пожалуйста как получить указатель на класс из указателя на интерфейс, т.е. допустим я имею IMyClass*, как мне узнать CMyClass*.
В этом случае ответ никак.Дело в том , что объект предоставляющий интрефйсы в COM может быть вообще написан не на C++ и даже не на объектном языке ( теоретически ).
Цитата:
Originally posted by sergey2000
Привет,
Скажите пожалуйста как получить указатель на класс из указателя на интерфейс, т.е. допустим я имею IMyClass*, как мне узнать CMyClass*.
Привет,
Скажите пожалуйста как получить указатель на класс из указателя на интерфейс, т.е. допустим я имею IMyClass*, как мне узнать CMyClass*.
Я делаю PropertyPage для ActiveX, параметр m_ppUnk[0] указывает на интерфейс этого ActiveX'а, но мне необходимо изменять некоторые свойства которые не доступны через COM интерфейс. Я знаю что можно добавить в интерфейс некоторую функцию, которая будет возвращать указатель на класс, но мне кажется что это некоректный способ. Есть ли другая возможность в PropertyPage получить указатель на класс ActiveX'a?
Цитата:
Originally posted by Alex_235
Я так понимаю что речь идет об интерфейсах COM ?
В этом случае ответ никак.Дело в том , что объект предоставляющий интрефйсы в COM может быть вообще написан не на C++ и даже не на объектном языке ( теоретически ).
Я так понимаю что речь идет об интерфейсах COM ?
В этом случае ответ никак.Дело в том , что объект предоставляющий интрефйсы в COM может быть вообще написан не на C++ и даже не на объектном языке ( теоретически ).
Правильнее безусловно реализовать изменение свойств только через интерфейсы.
Цитата:
Originally posted by sergey2000
Да о COM. Вообще проблема вот в чем:
Я делаю PropertyPage для ActiveX, параметр m_ppUnk[0] указывает на интерфейс этого ActiveX'а, но мне необходимо изменять некоторые свойства которые не доступны через COM интерфейс. Я знаю что можно добавить в интерфейс некоторую функцию, которая будет возвращать указатель на класс, но мне кажется что это некоректный способ. Есть ли другая возможность в PropertyPage получить указатель на класс ActiveX'a?
Да о COM. Вообще проблема вот в чем:
Я делаю PropertyPage для ActiveX, параметр m_ppUnk[0] указывает на интерфейс этого ActiveX'а, но мне необходимо изменять некоторые свойства которые не доступны через COM интерфейс. Я знаю что можно добавить в интерфейс некоторую функцию, которая будет возвращать указатель на класс, но мне кажется что это некоректный способ. Есть ли другая возможность в PropertyPage получить указатель на класс ActiveX'a?
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 объект может существовать в другом адресном пространстве или ( теоретически ) вообще на другом компутере.И возвращенный указатель при этом будет недействителен.
Правильнее безусловно реализовать изменение свойств только через интерфейсы.
Вообще говоря в COM работа с объектом предусматривается только через интерфейсы. Если добавить в интерфейс функцию возвращающую указатель на класс , то нужно учитывать , что COM объект может существовать в другом адресном пространстве или ( теоретически ) вообще на другом компутере.И возвращенный указатель при этом будет недействителен.
Правильнее безусловно реализовать изменение свойств только через интерфейсы.