靜態函數的問題在於它僅接受靜態類變量和函數。解決方法是可能的。從C++中的靜態方法訪問非靜態類變量
Class A{
int x;
static void function()
{
A *a= new A();
a->x; //this way we can access the non-static functions
free(a);
}
}
但讓我們假設這種情況在隊列中。
Class A{
queue x;
static void function1()
{
A *a= new A();
a->x.push(some argument); //this way we can access the non-static functions
free(a);
}
static void function2()
{
A *a= new A();
a->x.pop(); //this way we can access the non-static functions
free(a);
}
}
每個功能1和功能2將創建自己的實例即隊列,這意味着隊列x是兩者的功能不同。
我們怎樣才能讓兩個函數都可以訪問同一個隊列,而不是使它變爲靜態的,請問有沒有辦法解決,請注意function1()和function2()在線程中並行運行。因此function1()是獨立於function2()的,反之亦然。
爲什麼沒有達到靜態要求?或者,爲什麼'functdion1'和'function2'需要是靜態的? – 2014-12-19 05:21:03
我不知道靜態要求,但我被告知。函數1和函數2需要是靜態的,因爲它們是在單獨的.h和.cpp實現中通過pthread_create函數傳遞的。 – Kamran 2014-12-19 05:32:38
除了被問及回答的實際問題之外,你真的不應該把'a = new A()'與'free(a)'混合在一起。如果你有新東西,請刪除它。如果你'malloc()'有東西,'free()'它。 – etheranger 2014-12-19 05:34:40