WDNMde_ 2020-06-13 11:03 采纳率: 50%
浏览 211
已采纳

无法解析的外部命令,大佬们看看函数没有实现吗??继承的问题

#include
#include
#include
#include
using namespace std;
class CommissionEmployee
{
public:
CommissionEmployee(const std::string &, const std::
string &,
const std::string &, double = 0.0, double = 0.0);
void setFirstName(const std::string &);
std::string getFirstName() const;
void setLastName(const std::string &);
std::string getLastName() const;
void setSocialSecurityNumber(const std::string &);
std::string getSocialSecurityNumber() const;
void setGrossSales(double);
double getGrossSales() const;
void setCommissionRate(double);
double getCommissionRate() const;
double earnings() const;
void print() const;
private:
std::string firstName;
std::string lastName;
std::string socialSecurityNumber;
double grossSales;
double commissionRate;
};
class BasePlusCommissionEmployee : public CommissionEmployee
{
public:
BasePlusCommissionEmployee(const std::string&,
const std::string&, const std::string&,
double = 0.0, double = 0.0, double = 0.0);
void setBaseSalary(double);
double getBaseSalary() const;
double earnings() const;
void print() const;
//类BasePlusCommissionEmployee 的对象可以直接访问继承于类CommissionEmployce 中声明为 protected 的数据成员
//派生类获得了访问 protected 基类数据成员的特权
private:
double baseSalary;
};
CommissionEmployee::CommissionEmployee(
const string &first, const string &last,
const string &ssn, double sales, double rate)
:firstName(first), lastName(last),//成员初始化器
socialSecurityNumber(ssn)
{

setGrossSales(sales);
setCommissionRate(rate);

}
void CommissionEmployee::setFirstName(const string &first)
{
firstName = first;
}
string CommissionEmployee::getFirstName() const
{
return firstName;
}
void CommissionEmployee::setLastName(const string &last)
{
lastName = last;
}

string CommissionEmployee::getLastName() const
{
return lastName;
}
void CommissionEmployee::setSocialSecurityNumber(const
string &ssn)
{
socialSecurityNumber = ssn;
}
string CommissionEmployee::getSocialSecurityNumber() const
{
return socialSecurityNumber;
}

void CommissionEmployee::setGrossSales(double sales)
{
if (sales >= 0.0)
grossSales = sales;
else
throw invalid_argument("Gross sales must be >= 0.0");
}
double CommissionEmployee::getGrossSales() const
{
return grossSales;
}
void CommissionEmployee::setCommissionRate(double rate)
{

    if (rate > 0.0 && rate < 1.0)
        commissionRate = rate;
    else
        throw invalid_argument("Commission rate must be > 0.0and < 1.0");

}
double CommissionEmployee::getCommissionRate() const
{
return commissionRate;
}
double CommissionEmployee::earnings() const
{
return getCommissionRate() * getGrossSales();
}
void CommissionEmployee::print() const
{
cout << "雇员: " << firstName << ' ' << lastName
<< "\n社会保障号码: " << socialSecurityNumber
<< "\n总销售额 : " << grossSales
<< "\n提成 : " << commissionRate;
}
BasePlusCommissionEmployee::BasePlusCommissionEmployee(
//成员初始化器语法调用构造函数
const string&first, const string&last, const string&ssn, double sales, double rate, double salary)
: CommissionEmployee(first, last, ssn, sales, rate)
{
setBaseSalary(salary);
}
void BasePlusCommissionEmployee::setBaseSalary(
double salary)
{
if (salary >= 0.0)
baseSalary = salary;
else
throw invalid_argument("Salary must be >= 0.0");
}
double BasePlusCommissionEmployee::getBaseSalary() const
{
return baseSalary;
}
double BasePlusCommissionEmployee::earnings() const
{
return getBaseSalary() + CommissionEmployee::earnings();
}
void BasePlusCommissionEmployee::print() const
{
cout << "base-salaried ";
CommissionEmployee::print();
cout << "\nbase salary : " << getBaseSalary();
}
int main()
{
BasePlusCommissionEmployee
employee("Bob", "Lewis", "333-33-3333", 5000, 0.4, 3000);
cout << fixed << setprecision(2);
cout << "Employee information obtained by get functions : \n"
<< "\nFirst name is " << employee.getFirstName()
<< "\nLast name is " << employee.getLastName()
<< "\nSocial security number is "
<< employee.getSocialSecurityNumber()
<< "\nGross sales is " << employee.getGrossSales()
<< "\nCommission rate is " << employee.getCommissionRate()
<< "\nBase salary is " << employee.getBaseSalary() << endl;
employee.setBaseSalary(1000);
cout << "\nUpdated employee information output by print function : \n"
<< endl;
employee.print();
cout << "\n\nEmployee's earnings : " << employee.earnings()
<< endl;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-06-13 11:34
    关注

    测试了你的代码,没有报错
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog