Здравствуйте, samius, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, samius, Вы писали:
G>>>>Тогда приведи корректный с точки зрения COM способ получения разных указателей на IUnknown для одного объекта.
S>>>Обращение к QI может вернуть другой указатель, чем указатель, по которому к нему обратились. Так как любой интерфейс COM (даже еще не объявленный) расширяет IUnknown, то любой указатель, вернувшийся из QI является указателем на IUnknown.
G>>Что значит "является указателем IUnknown" ? Тут ты говоришь в терминах ООП в С++. С точки зрения COM единственный способ получения IUnknown — выполнить QUeryInterface. Я и говорю. что ты рассматриваешь какую-то смесь COM и C++, которая COM не является.
S>S>All interfaces in COM are polymorphic with IUnknown, that is, if you look at the first three functions in any interface you see QueryInterface, AddRef, and Release. In other words, IUnknown is base interface from which
S>all other interfaces inherit.
S>Посему указатель на любой интерфейс любого COM объекта есть указатель на IUnknown.
И? Приведение типа в смысле C++ не является корректной операцией в COM. Для этого надо делать QueryInterface.
S>>>Напиши все-таки код QI, разрешающий навигацию между интерфейсами и не использующий состояние. Или все-таки признай, что COM identity test использует состояние.
G>>Ты же сам писал что если наблюдаемое поведение не зависит от состояния, то значит совсем не зависит.
S>Ты же был там со мной категорически несогласен. А тут ссылаешься на меня?
Нет, я лишь сказал что вычисления можно заменить константой если они вычисляют одно и то же значение.
G>>В случае COM это выполняется.
S>Нет. Нигде не написано что QI не может изменять состояние объекта. Более того, оно именно это и делает, согласно многим сценариям COM.
Покажи пример чтоли.
S>QI не является детерминированной в общем случае.
Для IUnknown — является. Этого достаточно.
G>>Если нужна реализация, то пусть возвращается всегда первый face.
S>Я не понял, что такое первый face, откуда он берется, и почему он должен быть именно IUnknown гранью.
Первый по порядку (любому).