我正在尝试在类
中创建一个具有此自定义比较器函数的集合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
....
}
但是我收到的错误是'&amp;'token'之前的'预期标识符'
同样的事情在主
中运作良好int main()
{
set<node*,bool (*)(const node*,const node*)> mmset(&cmpFunc) ; // works fine
}
请让我知道这个错误背后的原因,非常感谢
答案 0 :(得分:0)
您不能在函数中编写可执行代码,因为
set<node*,bool (*)(const node*,const node*)> mset(&cmpFunc) ;
是构造函数调用(即可执行代码),它不在函数中(在class
声明中) - 它是不允许的。
使用构造函数初始化列表来初始化成员:
class huffmanEncoder
{
set<node*,bool (*)(const node*,const node*)> mset;
huffmanEncoder () : mset(&cmpFunc) {}
....
};