私はクラス "PclProc"を持っており、std :: sortを使いたいと思います。std :: sortは同じクラスのメンバー関数を使用していますか?
同じクラスに比較関数を書くのは、この比較に同じクラスの変数である "in_ptr"が必要なためです。
しかし、私は次のように行ったように、エラーが常にある:STDに使用されている数子の
error: no matching function for call to ‘sort(std::vector::iterator, std::vector::iterator, )’ 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++コンパイラがラムダ関数をサポートする場合はラムダ関数を使用できます。 [this one](https://stackoverflow.com/questions/37767847/stdsort-function-with-custom-compare-function-results-error-reference-to-non)のようなこれに関する先のスレッドがあります。 – rcgldr
@rcgldrありがとう。私の状況はC++ 11は利用できません。したがって、ラムダ関数は使用できません。私は関数演算子のオーバーロードを知っています。しかし、あなたは私の特別な場合のために書く方法について私により多くのヒントを与えることができますか? – user7487638