[問題] static member function
想請問一個問題
在我的class中,我建立了一個static的function
那這個function是做Thread的用途,長得像下面這樣:
DWORD __stdcall ThreadProc(void *Param);
那我另外還有一個Run的member function,如下:
void Run(int FuncNum)
其中,我利用Run的參數去指定class中的其他member function
丟給class中的ThreadProc,另開一個Thread去處理
大概是如下的作法:
void Run() {
CreateThread(NULL, 0, ThreadProc, (void *)Param, 0, &ThreadID);
}
DWORD __stdcall Light::ThreadProc(void *Param) {
LightParam *TmpOb = (LightParam *)(Param);
Light *pthread = (Light *)(TmpOb->ThisObject);
switch (TmpOb->FuncNum) {
case 1:
return pthread->OpenLight();
case 2:
return pthread->CloseLight();
case 3:
return pthread->GetLightState();
case 4:
return pthread->GetLightLevel();
case 5:
return pthread->SetLightLevel(TmpOb->Level);
default :
return -1;
}
}
那程式可以運作沒有錯
但是我在member function中有動過private的值
但是透過Thread執行後卻統統沒有改變
而直接使用「Object.Method」的方式卻可以
請問一下這是什麼原因?要如何修正?
以下附上敝人程式碼,還請各位先進給予指點
http://nopaste.info/e6d1fc9dbb.html
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.61.222
推
06/12 08:56, , 1F
06/12 08:56, 1F
→
06/12 08:56, , 2F
06/12 08:56, 2F
→
06/12 08:56, , 3F
06/12 08:56, 3F
→
06/12 08:57, , 4F
06/12 08:57, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章