очень умные указатели
От: shurik.  
Дата: 13.09.05 07:38
Оценка:
есть такая проблема
как известно, директива #import генерит совсем умные смарт поинтеры, которые проверяют возвращаемое значение и в случае чего кидают екзепшн.

в моём ком-сервера активно используются внутренние (реализованные в этом же ком-сервера) коклассы.
соответсвенно для них тоже хочется смартпоинтеры, причём эти смарт поинтеры должны принимать в параметр шаблона не интерфейс и именно тип класса (чтобы использовать public-методы не описанные в интерфейсе)

попробовал CComPtr
возникло две проблемы:
1) оператор присвания отказывается работать (что-то типа ambigous conversion to IUnknown*, только на кой они конвертят тип шаблона к IUnknown я так и не понял). Но это проблема решаема.
2) естественно возвращаемые значения он не проверят, т.е. при использовании внутренних классов приходится оборачивать вызов метода в функцию которая проверяет возвращаемое значение. Такой подход мне не нравится. Хочется единообразия работы с внешними и внутренними коклассами.

основная проблема под номером 2.
Наверняка ведь кто-то сталкивался с подобной задачей?
может возможно написать свой смарт поинтер и как-нибудь хитро заставить его его получать обратно управление после вызова оператора '->', что бы проверить что же там вернул метод? или может такой уже есть готовый?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.