2017-07-26 1 views
0

ich mit dieser kundenspezifischen Vergleichsfunktion innerhalb einer Klassebenutzerdefinierten Komparator für STL SETS innerhalb der Klasse durch Funktionszeiger

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 
.... 
} 

aber ich erhalte eine Fehlermeldung wie ‚erwartete Bezeichner vor‘ & 'einen Satz zu schaffen versuchen mit token‘

die gleiche Sache funktioniert gut im Inneren des Haupt

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

informieren Sie mich, den Grund für diesen Fehler wissen, vielen dank

Antwort

0

Sie können nicht ausführbaren Code nicht in Funktionen schreiben, und da

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

ist ein Konstruktor-Aufruf (d ausführbarer Code), und es ist nicht in einer Funktion (in einer class Deklaration) - es ist nicht erlaubt.

Verwenden Konstruktor Initialisiererliste initialisieren, Mitglieder:

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