噗噗皮皮虾 2021-05-06 16:18 采纳率: 0%
浏览 330

c++多继承问题,救救孩子吧!!

定义一个员工类Employee,有数据成员姓名,编号。定义一个销售员继承自员工类Sales,工资为销售额的提成10%,定义一个经理类Manager,固定工资8000,定义一个销售经理类,继承自销售员类和经理类,工资为固定工资5000加销售额的提成5%。每个类均有display()函数输出信息,编写主函数测试。主函数中定义一个销售经理对象,销售额为100000,输出信息。

题目已给的代码:

#include  <iostream>
using  namespace  std;
class  Employee
{
public:
        Employee(string  id,string  name):id(id),name(name)
        {}
        void  display()
        {
                cout<<"ID:"<<id<<endl;
                cout<<"Name:"<<name<<endl;
        }
protected:
        string  id,name;
};



int  main()
{
        string  id,name;
        float  sale;
        cout<<"Input  id  name  and  sale:"<<endl;
        cin>>id>>name>>sale;
        if(sale<0)
        {
                cout<<"Input  Error!"<<endl;
                return  0;
        }
        SalesManager  sm(id,name,sale);
        sm.display();
        return  0;
}

我写的中间部分的代码:

  1. //定义一个销售员继承自员工类Sales,工资为销售额的提成10%,
    class Sales : virtual public Employee
    {
    public:
    	Sales(string  id, string  name)
    	{
    		this->id = id;
    		this->name = name;
    
    	}
    
    	
    	void display()
    	{
    		cout << "ID:" << id << endl;
    		cout << "Name:" << name << endl;
    		cout << "salary:" << sale*1.1 << endl;
    	}
    protected:
    	float sale;
    
    };
    //定义一个经理类Manager固定工资8000
    
    class Manager :virtual public Employee
    {
    public:
    		
    
    	void display()
    	{
    
    	}
    protected:
    	float salary=8000;
    };
    //定义一个销售经理类继承自销售员类和经理类工资为固定工资5000加销售额的提成5%。
    class SalesManager : public Manager, public Sales
    {
    public:
    	//SalesManager()
    	//{
    	//	salary = 5000;
    	//}
    	SalesManager(string  id, string  name, float sale)
    	{
    		this->id = id;
    		this->name = name;
    		this->salary = salary + sale*0.5;
    	}
    	void display()
    	{
    		cout << "ID:" << id << endl;
    		cout << "Name:" << name << endl;
    		cout << "Salary:" << salary << endl;
    	}
    
    };

    错误代码:

请问应该怎么改才对呀??

  • 写回答

5条回答 默认 最新

  • CSDN专家-Time 2021-05-06 16:18
    关注
    class  Employee
    {
    public:
            Employee(){}
            Employee(string  id,string  name):id(id),name(name)
            {}
            void  display()
            {
                    cout<<"ID:"<<id<<endl;
                    cout<<"Name:"<<name<<endl;
            }
    protected:
            string  id,name;
    };

    默认构造函数

    评论

报告相同问题?

悬赏问题

  • ¥20 遥感植被物候指数空间分布图制作
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献
  • ¥15 很抱歉出现错误word不能启动(24),如何解决?
  • ¥15 javascript下载网络图片