user1569844
问问题
108 次
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 回答