變化當我使用一個靜態函數輸出與普通FN輸出
static int CompareFunction(const void* _g1, const void* _g2);
輸入到快速排序是正確
但使用
int CompareFunction(const void* _g1, const void* _g2);
輸入到快速排序是錯誤的。並且錯誤是: error: argument of type 'int (<namespace>::<ClassName>::)(const void*, const void*)' does not match '__compar_fn_t {aka int (*)(const void*, const void*)}'
靜態如何以這種方式更改行爲?我的意思是我所做的只是將一個類中的函數改爲靜態,這意味着它現在缺少這個指針。我沒有更多的變化。
如果你的比較器需要訪問你的類的部分,請嘗試'std :: sort'而不是'qsort'。這會給你更多的靈活性,因爲你可以使用函數或lambda函數,而不是隻有沒有附加參數的普通函數。 – StilesCrisis 2013-03-16 04:32:48