我正在使用stl优先级队列创建小根堆。这是我使用的类。
class Plane
{
private :
int id ;
int fuel ;
public:
Plane():id(0), fuel(0){}
Plane(const int _id, const int _fuel):id(_id), fuel(_fuel) {}
bool operator > (const Plane &obj)
{
return ( this->fuel > obj.fuel ? true : false ) ;
}
在主函数中,我这样实例化一个对象。
priority_queue<Plane*, vector<Plane*>, Plane> pq1 ;
pq1.push(new Plane(0, 0)) ;
我收到一个来自xutility
的错误,但我无法理解。
d:\microsoft visual studio 10.0\vc\include\xutility(674): error C2064: term does not evaluate to a function taking 2 arguments
希望能得到解决方案的帮助。
std::greater
会调用你的operator>
,它知道该怎么做。 - Lightness Races in Orbitoperator>
,因为它已经被定义过了。 - Fred Foo