Hoi,
Ik heb een functie die een IUnkown* teruggeeft. Deze heeft al een mooi AddRef() gekregen.
Maar ik zou graag gebruik maken van de mooie cleane en zelf - releasende code van CComPtr.
Maar als ik
doe dan denk ik dat door de assign er nogmaals een AddRef() wordt gedaan en dus zelfs als de tPtr out of scope gaat er slecht 1 keer Released() worden.
Is er een methode om toch de pointer door te geven (zonder naturllijk op de volgende regel meteen een Release() te doen?).
Nergens eigenlijk over dat gebruik gevonden omdat de meeste functions in /*out*/ gebruiken (ie - AdressOF, die wel 'VIES' maar prachtisch, wordt teruggeven als Raw Pointer).
Ik wil niet echt mijn eigen CComPtr gaan uitbreiden maar lijkt me toch weird dat dit er niet inzit...
Greetz
Onno
Ik heb een functie die een IUnkown* teruggeeft. Deze heeft al een mooi AddRef() gekregen.
Maar ik zou graag gebruik maken van de mooie cleane en zelf - releasende code van CComPtr.
Maar als ik
C++:
1
2
3
4
5
6
7
| IUnkown* mijnFunction() { //doe een queryInterface ofzo.. die dus AddRef return myAddReffedUnkown; } CComPtr< IUnknown > tPtr = mijnFunction(); |
doe dan denk ik dat door de assign er nogmaals een AddRef() wordt gedaan en dus zelfs als de tPtr out of scope gaat er slecht 1 keer Released() worden.
Is er een methode om toch de pointer door te geven (zonder naturllijk op de volgende regel meteen een Release() te doen?).
Nergens eigenlijk over dat gebruik gevonden omdat de meeste functions in /*out*/ gebruiken (ie - AdressOF, die wel 'VIES' maar prachtisch, wordt teruggeven als Raw Pointer).
Ik wil niet echt mijn eigen CComPtr gaan uitbreiden maar lijkt me toch weird dat dit er niet inzit...
Greetz
Onno
[ Voor 10% gewijzigd door hobbit_be op 24-05-2005 16:59 ]