2015-09-04 36 views
0
class Solution 
{ 
public: 
    bool cmp(int a, int b) 
    { 
    return a>b; 
    } 
    int noo(vector<int>& v) 
    { 
    sort(v.begin() , v.end() , &Solution::cmp); 
    return 0; 
    } 
}; 

如果我調用函數noo,它將不起作用。 但是,如果我踢cmp出我的功能,它會正常工作(顯然...) 什麼是問題,我怎麼寫函數指針在這裏?類中的C++函數指針

+0

可能的重複[如何通過排序謂詞是一個成員函數,從構造函數](http://stackoverflow.com/questions/20924450/how-to-pass-to-sort-predicate-that- is-a-member-function-from-the-constructor) – 2015-09-04 06:31:59

+2

使你的'cmp()'成員函數成爲靜態的。咄! – GreenScape

+0

你想按降序對整數進行排序嗎?使用'sort(v.rbegin(),v.rend())',它將使用默認的'less '進行比較。 –

回答

3

我認爲製作(cmp)函數全局將解決您的問題,如果您希望它是類成員,請將其標記爲靜態。

+1

這項工作,但你能夠足夠解釋爲什麼靜態是必要的? –