2017-07-26 53 views
0

我試圖創建一個類通過函數指針使用自定義比較用於內部類STL SET

bool cmpFunc(const node* a,const node* b) 
{ 
    return (a->freqOfAlphabet) <= (b->freqOfAlphabet) ; 
} 

class huffmanEncoder 
{ 
    set<node*,bool (*)(const node*,const node*)> mset(&cmpFunc) ;// throws error 
.... 
} 

內一組與此自定義比較器的功能,但「前的期望標識符」 &「我得到一個錯誤令牌」

同樣的事情的作品裏面主要

int main() 
{ 
set<node*,bool (*)(const node*,const node*)> mmset(&cmpFunc) ; // works fine 
} 

精細請讓我知道這個錯誤背後的原因,非常感謝

回答

0

在功能不能寫入可執行代碼不是,並且由於

set<node*,bool (*)(const node*,const node*)> mset(&cmpFunc) ; 

是一個構造函數調用(即可執行代碼),並且它不在函數中(在class聲明中) - 它是不允許的。

使用構造函數初始化列表,初始化成員:

class huffmanEncoder 
{ 
    set<node*,bool (*)(const node*,const node*)> mset; 
    huffmanEncoder() : mset(&cmpFunc) {} 
.... 
};