mem*_*emC 3 c++ sorting stdvector
在一个类中,我试图通过传递同一个类的方法对向量进行排序.但它在编译时会出错.谁能说出问题是什么?谢谢!
它给出以下错误:bool (Sorter::)(D&, D&)' does not matchbool 类型的参数(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;
}
Run Code Online (Sandbox Code Playgroud)
制作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)
{
...
}
Run Code Online (Sandbox Code Playgroud)
您还应该使用const引用,因为sortByNumber不应该修改对象.