The problem I am working on is the following:
Design a class named Employee. The class should keep the following information:
name (s string)
id number (a string)
salary (a double)
default constructor
a constructor with 3 parameters for the 3 attributes
get and set methods for the three attributes
Next, write a class named ProductionWorker that is derived from the Employee class. The
ProductionWorker class should have member variables to hold the following information:
shift (an integer)
hours (an integer)
hourly pay rate (a double)
default constructor
constructor with parameters for all attributes
get and set methods
The workday is divided into two shifts: day and night. The shift variable will hold an integer
value representing the shift that the employee works. The day shift is shift 1, and the night shift
is shift 2. The salary is calculated as hourly pay rate * hours per week.
Write a class named ShiftAdvisor. A shift supervisor is a salaried employee who supervises a
shift. In addition to a salary, the shift supervisor earns a monthly bonus when his or her shift
meets production goals. Design a ShiftSupervisor class that is derived from the Employee class.
The salary is calculated by salary plus the bonus. The ShiftSupervisor class should have the
following information:
bonus (a double)
default constructor
constructor with parameters for all attributes
get and set methods
Demonstrate the classes by writing a program (Lab10.cpp) that create one ProductionWorker
object and one ShiftAdvisor object using the constructors with parameters. And display the
object information
I made my header to look like this
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#ifndef lab10_h
#define lab10_h
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
class Employee
{
protected:
string name;
string eid;
double salary;
public:
//Default Constructor
Employee()
{
name = nullptr;
eid = nullptr;
salary = NULL;
}
//Parameteized Constructor
Employee(string n, string nid, double sal)
{
name = n;
eid = nid;
salary = sal;
}
//Set method for name
void setName(string n)
{ name = n;}
//Set method for employee id
void setEid(string nid)
{ eid = nid;}
//Set method for salary
void setSalary(double s)
{ salary = s;}
//Get method for name
string getName() const
{return name;}
//Get method for employee id
string getId() const
{ return eid;}
//Get method for salary
double getSalary() const
{ return salary;}
};
class ProductionWorker : public Employee
{
private:
int shift;
int hours;
double hourlyPayRate;
public:
//Default Constructor
ProductionWorker()
{
shift = NULL;
hours = NULL;
hourlyPayRate = NULL;
}
//Parameteized Constructor
ProductionWorker(string n, string id, int s, int h, double hpr)
{
name = n;
eid = id;
salary = h * hpr;
shift = s;
hours = h;
hourlyPayRate = hpr;
}
//Set method for salary
void setSalary(int h, double hpr)
{ salary = h * hpr;}
//Set method for shift
void setShift(int s)
{ shift = s;}
//Set method for hours
void setHours(int h)
{ hours = h;}
//Set method for hourly pay rate
void setHourlyPayRate(int hpr)
{ hourlyPayRate = hpr;}
//Get method for shift
int getShift() const
{return shift;}
//Get method for hours
int getHours() const
{return hours;}
//Get method for hourly pay rate
int getHourlyPayRate() const
{return hourlyPayRate;}
};
class ShiftSupervisor : public Employee
{
private:
double bonus;
public:
//Default Constructor
ShiftSupervisor()
{
bonus = NULL;
}
//Parameteized Constructor
ShiftSupervisor(string n, string nid, double s, double b)
{
bonus = b;
salary = b + s;
}
//set method for salary
void setSalary(double b, double s)
{
salary = b + s;
}
//set method for bonus
void setBonus(double b)
{bonus = b;}
//get method for bonus
double getBonus() const
{return bonus;}
};
#endif /* lab10_h */
| |
and my main looks as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include "lab10.h"
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
ProductionWorker pw1("John","e222", 1, 35, 7.25);
cout << "\nName: " << pw1.getName() << "\nID: " << pw1.getId() << "\nSalary: " << pw1.getSalary() << "\nShift: " << pw1.getShift() << endl;
ShiftSupervisor ss1("Bob", "s222", 60000, 500);
cout << "\nName: " << ss1.getName() << "\nID: " << ss1.getId() << "\nSalary: " << ss1.getSalary() << endl;
return 0;
}
| |
When I compile the program all works swimmingly, however, when I run the program I get an error that reads "Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)" which I think is due to a NULL being returned somewhere but I am not sure where. All help is appreciated!! Thank you!