[問題] class static data member
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
vs2008 + xp
問題(Question):
這二篇剛問完 #1DDQ0bvS #1DDQrPaA ,
鑽牛角的壞習慣又跑出來了...
com 元件的初始化只能初始一次,
如果我想包 class,不讓其它的設計者管理
ConInitialize 與 CoUninitialize 的話該怎麼做?
目前想像的 class 大概長得像這樣
class wall{
static bool init
public:
wall(){
if(!init) {
CoInitialize(NULL); // 這個只能用一次
init = true;
}
}
}
這樣會遇到 3 個問題
1. 直接用 if(!init),第一次執行時,init 會不會判別成 unknow ?
還是用 static bool init 時就初始化成 false ?
2. CoUninitialize(); 是程式結束時要做的事,也只要執行一次,
如果放在解構子裡面的話,多個物件解構發生時就重覆執行了,
有辦法讓它只執行一次嗎?
3. 如果有多個 class (class A, B, C),它們全都沒有任何關係,
但他們都要調用 com ,這樣就不適用每個 class 都有一份自己的 init
在不考慮繼承、全域變數下,是否有辦法讓 CoInitialize、CoUninitialize
只跑一次?
還是說,只能讓其它的 user 自己去呼叫
CoInitialize、CoUninitialize,
這個動作不能(或不好)放在 class 裡?
(單純想知道如果要放的話該怎麼放?)
補充說明(Supplement):
謝謝各位先進指教,感激不盡 !!
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
推
01/18 23:58, , 1F
01/18 23:58, 1F
→
01/18 23:59, , 2F
01/18 23:59, 2F
推
01/19 00:08, , 3F
01/19 00:08, 3F
→
01/19 00:09, , 4F
01/19 00:09, 4F
推
01/19 00:26, , 5F
01/19 00:26, 5F
其實看到您給的第一個連結我就有點 confuse 了
裡面是說要把建構子用 private 宣告,
可能是 java 的關係,所以我以為 java 可以指定建構子的權限(不會java XD)
然而您 po 的第二段連結發現,那個 Lock 建構子也不是放在 public 底下的
是我會錯意了嗎?
另想請教
照您的寫法,只要把那個 namespace 放到我的 header 裡面,
其它的 calss 也完全不用去管 com 有沒有初始化、釋放的問題吧?
另不知這方面是否有參考書籍?(Primer 念了大半似乎沒什麼印象..)
最後謝謝您的細心指教,感謝!!
※ 編輯: tropical72 來自: 180.177.76.142 (01/19 00:36)
→
01/19 00:36, , 6F
01/19 00:36, 6F
→
01/19 00:38, , 7F
01/19 00:38, 7F
→
01/19 00:40, , 8F
01/19 00:40, 8F
→
01/19 00:40, , 9F
01/19 00:40, 9F
→
01/19 00:40, , 10F
01/19 00:40, 10F
→
01/19 00:41, , 11F
01/19 00:41, 11F
→
01/19 00:41, , 12F
01/19 00:41, 12F
→
01/19 00:42, , 13F
01/19 00:42, 13F
→
01/19 00:42, , 14F
01/19 00:42, 14F
→
01/19 00:44, , 15F
01/19 00:44, 15F
→
01/19 00:46, , 16F
01/19 00:46, 16F
→
01/19 00:48, , 17F
01/19 00:48, 17F
推
01/19 00:49, , 18F
01/19 00:49, 18F
→
01/19 00:49, , 19F
01/19 00:49, 19F
→
01/19 00:49, , 20F
01/19 00:49, 20F
推
01/19 00:50, , 21F
01/19 00:50, 21F
→
01/19 00:50, , 22F
01/19 00:50, 22F
→
01/19 00:51, , 23F
01/19 00:51, 23F
推
01/19 00:55, , 24F
01/19 00:55, 24F
→
01/19 00:57, , 25F
01/19 00:57, 25F
→
01/19 00:58, , 26F
01/19 00:58, 26F
→
01/19 00:59, , 27F
01/19 00:59, 27F
→
01/19 16:39, , 28F
01/19 16:39, 28F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章