在一个类中,我试图通过传递同一类的方法来对向量进行排序。但在编译时它会给出错误提示。有人能告诉我问题出在哪里吗?谢谢!
它给出了以下错误: 类型为“bool (Sorter::)(D&, D&)”的参数与“bool (Sorter::*)(D&, D&)”不匹配
我还尝试过使用sortBynumber(D const& d1, D const& d2)。
它给出了以下错误: 类型为“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;
}
sortByNumber
定义为成员函数?它同样可以作为自由函数。 - NaveenD
的析构函数。编译器会免费为您提供完全相同的代码。少写代码,减少错误。 ;) 另外,我看到Sorter::vector
是公共的。这只是一个观察;可能不是您想要的。另一件事:如果您知道向量的大小,则最好在Sorter
的初始化列表中指定它,以避免重新分配。其他人已经谈论了const正确性的重要性,所以您应该注意这一点。最后一件事:在那个for循环中,您应该将i
定义为循环内的局部变量。 - wilhelmtell