标题:排序问题!
只看楼主
chllcy
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-7
 问题点数:0 回复次数:3 
排序问题!

class CEmployee {
//friend ostream &operator<<(ostream &output,CEmployee &m);
private:
int type;
char _name[30];
char _sex[3];//男或女
BDay _birthday;//显示格式:1980-1-1,请自己设计并实现类BDay.
public:
CEmployee(){};
CEmployee(int a,const char* nm, const char* sex, const BDay& bd);//构造函数
int EmpolyeeType();//返回雇员类型
string EmpolyeeName();//返回雇员名字
........

class CManager : public CEmployee{
private :
float _salary;//固定月薪
public :
CManager(); //初始化父类属性值,并初始化月薪为0.0
CManager(int c,char* name,char* sex,BDay a,float salary);
.........

class CWage : public CEmployee {
private :
float _wage;//时薪
float _hours;//小时
public :
CWage();//自己编写CWage的恰当的构造函数。注意在生成一个CWage对象时构造函数必须初始化该对象的_wage, _hours属性值为0.0,0.0。
CWage(int c,char* name,char* sex,BDay a,float wg,float hrs);
......

比如有这样三个类,我用list<CEmployee*>pEmplist(指针可以指向这三个类)保存记录,现在想对记录按名字排序,无奈是指针类型,写了个下面这个
bool operator>(CEmployee* x, CEmployee* y)
{
return x->EmpolyeeName()>y->EmpolyeeName();
}

void INput::sortsalary(){
pEmplist.sort(greater<CEmployee*>());
}
调试总是d:\vs2005\55555555555\company_system\company_system\cempolyee.cpp(295) : error C2803: “operator >”必须至少有一个类类型的形参

如果不是指针我还可以写,只是指针类型排序有点困难........不知哪位高手帮帮忙?

搜索更多相关主题的帖子: private public friend 
2006-12-26 11:07
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 

个人认为重载运算符的参数不应该用指针类型
就像这个例子:

int a=1,b=2;
int *p=&a,*q=&b;

如果要求用指针p,q来进行比较,我们会这样写:
*p>*q
而绝对不会写成p>q的形式,因为这是在比较两个地址的大小
对象的指针也是一样,对指针比较是没意义的,只能比较它们指向的实际内容


2006-12-27 09:42
tancui
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2006-11-19
得分:0 

没有试过呀,不过你可以照它说的试一下

2006-12-27 10:03
论坛元老
Rank: 1
等 级:新手上路
帖 子:812
专家分:0
注 册:2008-3-31
得分:0 
帮不上忙,I'SORRY.....
2008-04-02 15:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-112161-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.866463 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved