通过函数指针对类内的 STL SET 使用自定义比较器

using custom comparator for STL SET inside class through function pointer

本文关键字:SET STL 比较器 自定义 函数 指针      更新时间:2023-10-16

我正在尝试在类中使用此自定义比较器函数创建一个集合

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
}

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

你不能在函数中编写可执行代码,因为

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

是一个构造函数调用(即可执行代码(,它不在函数中(在class声明中( - 这是不允许的。

使用构造函数初始值设定项列表初始化成员:

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