晚上好,专家C++以普通方式对对象类进行排序
我正在用通用的方式进行编程练习。我明白了如何用不同的数据类型不同的对象进行排序,但我奋力如何排序类
这里是我的代码:
#include <iostream>
#include<string>
using namespace std;
class Employee
{
private:
int idNum;
string lastName;
int hireDate;
int verifyDate(int);
public:
Employee();
Employee(int,string,int);
void displayData();
void setLastName(string);
void setIdNum(int);
void setHireDate(int);
void setGradePointAverage(double);
};
Employee::Employee()
{
idNum=0;
lastName="";
hireDate=0;
}
Employee::Employee(int idNum, string lastName, int hireDate)
{
this->idNum=idNum;
this->lastName=lastName;
this->hireDate=hireDate;
}
void Employee::displayData()
{
cout<<"\nEmployee Data:";
cout<<"\nID: "<<idNum;
cout<<"\nLastName: "<<lastName;
cout<<"\nHireDate: "<<hireDate;
}
void Employee::setLastName(string lastName)
{
this->lastName=lastName;
}
void Employee::setIdNum(int idNum)
{
this->idNum=idNum;
}
void Employee::setHireDate(int hireDate)
{
this->hireDate=hireDate;
}
void Employee::setGradePointAverage(double grade)
{
double new_grade;
new_grade=grade;
}
template <class T>
void selectionSort (T data[], int n){
T temp;
for(int i=0, j, least; i < n-1; i++){
for(j = i+1, least = i; j < n; j++){
if (data[j] < data[least]){
least = j;
}
}
temp = data[least];
data[least] = data[i];
data[i] = temp;
}
}
int main()
{
Employee e[3];
e[0].setIdNum(337322);
e[1].setIdNum(3539854);
e[2].setIdNum(1224567);
e[0].setLastName("Marlen");
e[1].setLastName("Oleg");
e[2].setLastName("Test");
e[0].setHireDate(25061989);
e[1].setHireDate(30001990);
e[2].setHireDate(12122012);
for (int i=0; i<3;i++)
{
e[i].displayData();
cout<<"\n";
}
selectionSort(e,3);
return 0;
}
当我把我的选择排序函数编译器给了我以下错误:
Error 1 error C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : could not deduce template argument for 'const std::basic_string<_Elem,_Traits,_Alloc> &' from 'Employee' c:\users\gulmira\documents\visual studio 2010\projects\csci203_lab1\csci203_lab1\task6.cpp 74
Error 2 error C2784: 'bool std::operator <(const _Elem *,const std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'const _Elem *' from 'Employee' c:\users\gulmira\documents\visual studio 2010\projects\csci203_lab1\csci203_lab1\task6.cpp 74
Error 3 error C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'const std::basic_string<_Elem,_Traits,_Alloc> &' from 'Employee' c:\users\gulmira\documents\visual studio 2010\projects\csci203_lab1\csci203_lab1\task6.cpp 74
请建议如何解决这一点的想法,在此先感谢
所以我明白我需要重载操作员? 和我如何访问我排序数字和访问它? – mydreamadsl 2012-02-11 17:04:52
非常感谢你! – mydreamadsl 2012-02-11 17:09:22
因此,如果我已经定义了运算符>按数字排序,如何按名称排序? – mydreamadsl 2012-02-11 17:13:40