在一個out-proc COM服務器中,我需要一個類工廠,我將傳遞給CoRegisterClassObject()
。 CreateInstance()
將僅使用new
來創建對象實例並且不需要存儲數據。 LockServer()
將修改不是特定於工廠實例的共享鎖計數器。使用全局對象作爲COM類工廠合法嗎?
所以事實上,我不需要在工廠內存儲任何不同的數據,只有一個對象將會很好。另外我不想照顧那個物體的壽命。這就是爲什麼我很想工廠聲明爲一個全局變量(含引用計數設置爲1構造函數):
//Server.cpp
CMyFactory factory;
一旦我這樣做,我不再滿足於delete this
內Release()
- 該代碼應從不在正常條件下運行(引用計數從1開始,從不到零),如果運行,則會導致未定義的行爲。所以我覺得從工廠取出裁判計數器和實施AddRef()
和Release()
這樣的:
ULONG CMyFactory::AddRef()
{
return 1;
}
ULONG CMyFactory::Release()
{
return 1;
}
所以引用計數只會有沒有副作用,沒有delete this
。
描述的實施是否合法?會導致任何問題嗎?