问候我正在尝试在特殊对象上使用 std::sort 算法。我有一个要排序的列表和一个二进制函数,它可以给我一个比较:
B.cpp 中有趣的部分
void B::FindClosest(vector<A*> list)
{
bool (B::*ptr)(A*,A*) = &B::Closer;
sort(list.begin(),list.end(),(this->*ptr));
// some use of this sorted list
}
bool B::Closer(A* lhs ,A* rhs)
{
if(Distance(this,lhs)<Distance(this,rhs))
{
return true;
}
else
{
return false;
}
}
和 Bh:
class B : public A
public:
void FindClosest(vector<A*>);
bool Closer(A*,A*);
这看起来很简单,但我不知道为什么它不起作用。在我看来,我在指向成员函数的指针上做错了,但不知道是什么。
这是错误消息:
agglomerate.cpp:32: error: invalid use of non-static member function
我已经尝试过其他一些方法来让事情正常工作,但没有。
我不限于指向成员函数的指针,如果您有一种简单/不同的方法来做到这一点,欢迎您。
非常感谢,
阿兹瑞拉