2011-03-15 35 views
1

我有一個簡單的問題在這裏shared_ptr的 - 但是CComPtr交換

讓我們假設我們有一個員工的shared_ptr/enable_shared_from_this使用代碼庫。

而且我們已被要求最先進代碼庫-a一部分轉換成我們都應該使用CComPtr代替,而它沒有強制規定一個COM服務器...

現在這裏是個問題; atl/com +中有沒有模仿enable_shared_from_this的功能?

回答

2

使用CComPtr時不需要enable_shared_from_this,因爲CComPtr不保留引用計數。相反,它指向的對象維護引用計數。所有CComPtr所做的是在對象上調用成員函數來增加或減少引用計數。沒有與執行下列操作沒有問題:

void Func(IUnknown* someObj) 
{ 
    CComPtr ptrA = someObj; 
    CComPtr ptrB = someObj; 
} 
0

有大量的COM對象的規則,它不是聲明智能指針一樣容易。我建議研究這個問題,這不是可以簡化爲一個簡短答案的東西。

相關問題