我有一个类foo,在这个类中,我需要一个静态优先级队列栏来保存指向一定数量的foo对象的指针,foo对象还有一个私有成员buzz,用来保存比较时对象的权重。
到目前为止,我已经尝试了以下方法:
class foo{
private:
// some stuff
int buzz;
public:
// some more stuffs
static bool compare (const foo* l, const foo* r){
return l->buzz < r->buzz;
}
static std::priority_queue<foo*, std::vector<foo*>, foo::compare> bar;
};
但我得到这个错误的铿锵声:
模板类型参数的模板参数必须是类型
我读了this和this,但不能让我的头周围如何做,或我做错了什么。
1条答案
按热度按时间mhd8tkvw1#
正如您在
std::priority_queue
documentation中所看到的,第三个模板参数Compare
是:提供严格弱排序的比较类型。
函数指针(如您所使用的)不能用于比较类型。
提供比较类型的一种方法是通过具有**
opertor()
**的类(最好是const
类):