c++ - 传递类方法而不是 std::sort 中的函数

标签 c++ sorting stdvector

在一个类中,我试图通过传递同一类的方法来对 vector 进行排序。但是它在编译时会出错。谁能说出问题是什么?谢谢!

它给出了以下错误: bool (Sorter::)(D&, D&)' 类型的参数不匹配bool (Sorter::*)(D&, D&)'

我也尝试过使用 sortBynumber(D const& d1, D const& d2)

#include<vector>
#include<stdio.h>
#include<iostream>
#include<algorithm>

class D {
      public:                   
             int getNumber();            
             D(int val);
             ~D(){};
      private:
              int num;
};

D::D(int val){
         num = val;
         };

int D::getNumber(){
    return num;
};


class Sorter {
      public:                   
             void doSorting();  
             bool sortByNumber(D& d1, D& d2);
             std::vector<D> vec_D;          
             Sorter();
             ~Sorter(){};
      private:
              int num;
};

Sorter::Sorter(){                 
        int i;
        for ( i = 0; i < 10; i++){
            vec_D.push_back(D(i));
           }
         };

bool Sorter::sortByNumber(D& d1, D& d2){
     return d1.getNumber() < d2.getNumber();
     };

void Sorter::doSorting(){
     std::sort(vec_D.begin(), vec_D.end(), this->sortByNumber);
     };




int main(){    
    Sorter s;
    s.doSorting();

    std::cout << "\nPress RETURN to continue...";
    std::cin.get();

    return 0;
}

最佳答案

使 Sorter::sortByNumber 静态化。由于它不引用任何对象成员,因此您不需要更改任何其他内容。

class Sorter {
public:                   
    static bool sortByNumber(const D& d1, const D& d2);
    ...
};

// Note out-of-class definition does not repeat static
bool Sorter::sortByNumber(const D& d1, const D& d2)
{
    ...
}

您还应该使用 const 引用,因为 sortByNumber 不应该修改对象。

关于c++ - 传递类方法而不是 std::sort 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808216/

相关文章:

c++ - 是否推荐具有 copy-and-swap 习语和自赋值检查的复制赋值运算符?

c++ - 迭代器不访问完整 vector

c++ - 使用 lambda 函数删除 std::vector 中相同值的拷贝

python - 无法使用 MSVC2015 编译 boost.python 1.65.1

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

JAVA HashSet顺序

sorting - 根据Elasticsearch中的位置和等级进行自定义排序

CUDA 中的 C++11 别名模板

c++ - 数组分配问题

javascript - 降序表以及 JavaScript 中的升序