Указатели переменных-членов на COM-объекты - PullRequest
1 голос
/ 20 апреля 2010

Есть ли проблема с сохранением ссылок на указатели переменных-членов на COM-объекты и повторным рассмотрением ссылки через класс в C ++.

Кто-нибудь знает причину, по которой вы хотите вызывать .CreateInstance каждый разЯ хотел использовать объект COM, т. е. каждый раз вы получали новый экземпляр.

Я не вижу причин, по которым вы бы хотели это сделать,

Спасибо,

(Нет, это приемлемый ответ !!!)

Ответы [ 3 ]

5 голосов
/ 20 апреля 2010

Это зависит от того, что вы действительно хотите.

Если вам нужен один и тот же объект каждый раз, когда вы должны держать указатель на него. Если вам нужен новый объект каждый раз (по какой-либо причине), вы должны каждый раз создавать новый экземпляр. Если вам все равно, сохранить объект предпочтительнее, поскольку вызовы CoCreateInstance() относительно дороги.

2 голосов
/ 20 апреля 2010

В этом случае не существует общего правила, поскольку существует ряд переменных, которые определяют, является ли это хорошей идеей или нет.

Во-первых: если вы владеете рассматриваемыми COM-объектами, т. Е. Имеете исходный код и контролируете, как они используются, то да, это совершенно безопасно.

Если COM-объекты являются сторонними COM-объектами, иногда дрянной код в них может заставлять вас «создавать Instance» на них каждый раз, когда вы их используете - по необходимости (и для самосохранения).

Если COM-объект действует как прокси-объект, вам может понадобиться создавать его каждый раз, когда вы его используете, из-за чего-то позади сцены, то есть других клиентов, использующих тот же объект.

Есть еще ситуации, но подведу итог: это зависит ...

2 голосов
/ 20 апреля 2010

Я бы сказал, что это зависит от того, что такое COM-объект и как вы его используете.Как правило, можно повторно использовать соединение ADO, но если вы оставите его в грязном состоянии, то при повторном использовании вы можете столкнуться со странным поведением.Некоторые COM-объекты могут иметь метод повторной инициализации или очистки, который можно вызвать, чтобы вернуть их в чистое состояние.

...