通过函数指针

时间:2017-07-26 16:44:43

标签: c++ 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
....
}

但是我收到的错误是'&amp;'token'之前的'预期标识符'

同样的事情在主

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

请让我知道这个错误背后的原因,非常感谢

1 个答案:

答案 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) {}
....
};