0
4

1 回答 1

1

如果您只是在operator()之前声明比较器仿函数MyClass并在类定义之后定义它,则可以编译,如下所示:

class MyClass;

struct compare_distances
{
    inline bool operator()(const MyClass* n1, const MyClass* n2) const;
};

typedef boost::heap::fibonacci_heap<MyClass*, boost::heap::compare<compare_distances> > fib_heap;

class MyClass
{
public:
    string name;
    double distance;
    fib_heap::handle_type handle;
};

bool compare_distances::operator()(const MyClass* n1, const MyClass* n2) const
{
    return n1->distance > n2->distance;
}

请注意,我已将内联添加到函数中以避免链接器错误。(结构中定义的成员函数是隐式内联的。)

于 2014-06-09T01:20:15.877 回答