抽象类产生子类的对象链表有多种,如何进行排序等操作?

清天灵月 2012-01-11 01:42:35
问题背景: 假设要为某个公司编写雇员工资支付程序。一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager) 每月按固定工资支付,临时工(Floater )按小时支付。要求设计抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),所有员工用该方法计薪。要求用多态实现。
经理工资计算:月工资()
销售人员工资计算:基本工资+每件产品提成额*销售的产品数量
一般工人工资计算:每天工资额*工作天数
临时工工资计算:每小时工资额*总工作小时数

如果用链表来存储几种子类的对象,就得用几个链表来分别存储所有的对象!
那么,如果要用一个公共函数来对各个员工的totalsalary进行排序操作,该如何把几个链表连在一起,然后进行排序呢?
或者是给个 姓名 属性要求输出这个对象的所有信息?
总之,问题归结就是如何把这几个类似的对象链表 相同的信息重新组成一个新的链表!姓名 性别 出生日期 工资 这几个属性都是相同的!

在线等。。。
...全文
66 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
清天灵月 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq120848369 的回复:]

意义是程序员自己定的, 语言阻止不了你.
[/Quote]
可惜我是个菜鸟,连语言都还没完全学会!!!
qq120848369 2012-01-11
  • 打赏
  • 举报
回复
意义是程序员自己定的, 语言阻止不了你.
清天灵月 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qscool1987 的回复:]

如果用链表来存储几种子类的对象,就得用几个链表来分别存储所有的对象!

这里根本不需要几个链表,你直接用一个链表就行了,元素为基类指针
[/Quote]
这样写的话,会无法取到子类的私有属性,那么就丧失了意义了!
清天灵月 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq120848369 的回复:]

C++存基类指针,C用void*存对象地址。
[/Quote]
这样写的话,会无法取到子类的私有属性,那么就丧失了意义了!
清天灵月 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lofeo 的回复:]

STL的sort函数可以排序。
先#include <algorithm>
重写Employee的<操作符或者写一个less函数
C/C++ code

int lessEmp(const Employee& lh,const Employee& rh)
{
return lh.totalsalary<rh.totalsalary?-1:(lh.totalsalary==……
[/Quote]

O(∩_∩)O~ 我们这是学生作品,都是得手工写排序函数!不能直接调用某些库函数! 我问题就是如何把几个链表的相同信息提取出来 弄成一个新链表!
qq120848369 2012-01-11
  • 打赏
  • 举报
回复
C++存基类指针,C用void*存对象地址。
qscool1987 2012-01-11
  • 打赏
  • 举报
回复
如果用链表来存储几种子类的对象,就得用几个链表来分别存储所有的对象!

这里根本不需要几个链表,你直接用一个链表就行了,元素为基类指针
闲的每日C 2012-01-11
  • 打赏
  • 举报
回复
STL的sort函数可以排序。
先#include <algorithm>
重写Employee的<操作符或者写一个less函数

int lessEmp(const Employee& lh,const Employee& rh)
{
return lh.totalsalary<rh.totalsalary?-1:(lh.totalsalary==rh.totalsalary?0:1);
}


//这样使用sort排序
sort(vectorEmployee.begin(),vectorEmployee.end());
sort(vectorEmployee.begin(),vectorEmployee.end(),lessEmp);

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧