【发布时间】:2017-06-13 03:06:04
【问题描述】:
我有一个类“PclProc”,我想使用 std::sort。
我在同一个类中编写了一个比较函数,因为这种比较需要“in_ptr”,它是同一个类中的一个变量。
但正如我所做的那样,总是有一个错误:
错误:没有匹配的调用函数 '排序(标准::向量::迭代器,标准::向量::迭代器, )’ std::sort(cloud_indice.indices.begin(),cloud_indice.indices.end(),PclProc::MyCompare);
bool PclProc::MyCompare(int id1, int id2)
{
return in_ptr->points[id1].z<in_ptr->points[id2].z;
}
float PclProc::MedianZDist(pcl::PointIndices cloud_indice)
{
std::sort(cloud_indice.indices.begin(),cloud_indice.indices.end(),PclProc::MyCompare);
int size=cloud_indice.indices.size();
float median_x,median_y;
...
【问题讨论】:
-
std::sort 不适用于普通成员函数。如果您的 C++ 编译器支持 lambda 函数,则可以使用函数运算符 (functor) 或 lambda 函数。有关于此的先前线程,例如this one。
-
@rcgldr 谢谢。我的情况是 C++11 不可用。所以无法使用 lambda 函数。我知道函数运算符重载。但是你能给我更多关于如何为我的特殊情况写作的提示吗?
标签: class sorting member-functions