0
我有一個類「PclProc」,我想使用std :: sort。std ::使用同一類中的成員函數進行排序?
我在同一個類中編寫了一個比較函數,因爲這個比較需要「in_ptr」,它是同一類中的一個變量。
但我一樣以下,總有一個錯誤:函子
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++編譯器支持lambda函數,則可以使用函數運算符(函子)或lambda函數。有關於此的前線程,如[this one](https://stackoverflow.com/questions/37767847/stdsort-function-with-custom-compare-function-results-error-reference-to-non)。 – rcgldr
@rcgldr謝謝。我的情況是C++ 11不可用。所以lambda函數不能使用。我知道函數操作符超載。但是你能否給我更多關於如何爲我的特例寫信的提示? – user7487638