我有一個處理外部庫的對象APIController
。我想從同一個函數的不同調用(C風格)訪問這個(獨特的)控制器。是否允許使用C++對象的全局變量(C風格)?
因此,我想過要創建一個全局變量APIController
,以便在我的函數的不同調用中訪問同一個實例,其中給定的context_t *context
在每次調用時都不相同。 最後,程序每調用context
調用close
函數。
APIController *controller = NULL;
void call(context_t *context) /* called with different contexts */
{
if (controller == NULL) controller = new APIController();
controller->instances_counter++;
/* use controller */
controller->use_it();
}
void close(context_t *context)
{
controller->instances_counter--;
if (controller->instances_counter == 0)
delete controller;
}
這樣做是否正確?我覺得它不是,但我看不到另一種簡單的方法。
什麼是_'c全局變量?你的意思是你的班級的靜態實例?!? _'這樣做是否恰當?'當然這不是一個很好的解決方案恕我直言。 –
如果你打算在同一時間在這些函數中有多個線程,你應該使用某種互斥來防止對控制器及其計數器的訪問。 – dlf
我同意「不好」和「互斥」,但只是一個簡單的答案:是的,它是允許的。如果你編譯爲C++,它就是C++,不管你使用哪種線程函數。在C++中,您可以使用C++對象... – deviantfan