Welp, I'm back again. I've tried a few things and I've found myself even further back than when I started. If you could help, it'd be much appreciated. And yes, I'm thankful for the help I have received. Thanks, people.
Class:
#include <iostream>
using namespace std;
const unsigned LastNameSize = 10;
class Employee {
public:
Employee E1( long id ); //Construct an employee file from I.D. alone.
Employee E2( long id, char lastName, float payRate, int hours ); //Construct an
//employee file from an I.D., last name, pay rate, and number of hours.
long GetId(); //Get/return employee I.D. number.
char GetLastName(); //Get/return employee's last name.
float GetPayRate(); //Get/return employee's pay rate.
int GetHours(); //Get/return employee's hours.
float CalcGrossPay( int hours, float payRate); //Calculate and return gross pay.
int SetHours( int hrs ); //Set the number of hours.
float SetPayRate( float pRate ); //Set the pay rate.
friend istream & operator >>( istream & input, Employee & E);
friend ostream & operator <<( ostream & os, const Employee & E);
~Employee() //Destructor.
{
cout << "Employee class destructor called.\n";
}
private:
long id; //ID number value.
int hours; //Number of hours value.
float payRate; //Pay rate value.
char name; //Last name value.
};
inline unsigned Employee::GetPayRate() const
{
return payRate;
}
inline void Employee::SetPayRate( float pRate )
{
payRate = pRate;
}
inline unsigned int Employee::GetHours()
{
return hours;
}
inline int Employee::SetHours( int hrs )
{
hours = hrs;
}
Implementation:
#include "employee.h"
Employee::Employee()
{
name[0] = '\0';
}
Employee::E2( long id, char lastName, float payRate, int hours )
istream & operator >>( istream & input, Employee E2 & E2)
{
input >> E2.id >> E2.name >> E2.payRate >> E2.hours;
return input;
}
ostream & operator <<( ostream & os, const Employee E2 & E2)
{
os << " I.D.: " << E2.id << '\n'
<< " Last name: " << E2.name << '\n'
<< " Pay rate: " << E2.payRate << '\n'
<< " Hours: " << E2.hours << '\n';
return os;
}
float Employee::CalcGrossPay( int hours, float payRate )
{
return hours*payRate;
}
Error log:
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(12): error C2248: 'Employee::hours' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(4): error C2600: 'Employee::Employee' : cannot define a compiler-generated special member function (must be declared in the class first)
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(5): error C2109: subscript requires array or pointer type
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(10): error C2143: syntax error : missing ',' before '&'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(10): error C2146: syntax error : missing ';' before identifier 'istream'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(10): error C2761: 'Employee Employee::E2(long,char,float,int)' : member function redeclaration not allowed
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(12): error C2248: 'Employee::id' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(12): error C2248: 'Employee::name' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(12): error C2248: 'Employee::payRate' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(16): error C2143: syntax error : missing ',' before '&'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(18): error C2248: 'Employee::id' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(19): error C2248: 'Employee::name' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(20): error C2248: 'Employee::payRate' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.cpp(21): error C2248: 'Employee::hours' : cannot access private member declared in class 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(39): error C2511: 'unsigned int Employee::GetPayRate(void) const' : overloaded member function not found in 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(39): error C2511: 'unsigned int Employee::GetPayRate(void) const' : overloaded member function not found in 'Employee'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(44): error C2371: 'Employee::SetPayRate' : redefinition; different basic types
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(44): error C2371: 'Employee::SetPayRate' : redefinition; different basic types
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(21) : see declaration of 'Employee::SetPayRate'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(44): error C2556: 'void Employee::SetPayRate(float)' : overloaded function differs only by return type from 'float Employee::SetPayRate(float)'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(44): error C2556: 'void Employee::SetPayRate(float)' : overloaded function differs only by return type from 'float Employee::SetPayRate(float)'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(21) : see declaration of 'Employee::SetPayRate'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(49): error C2371: 'Employee::GetHours' : redefinition; different basic types
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(49): error C2371: 'Employee::GetHours' : redefinition; different basic types
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(16) : see declaration of 'Employee::GetHours'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(49): error C2556: 'unsigned int Employee::GetHours(void)' : overloaded function differs only by return type from 'int Employee::GetHours(void)'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(49): error C2556: 'unsigned int Employee::GetHours(void)' : overloaded function differs only by return type from 'int Employee::GetHours(void)'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\Employee.h(16) : see declaration of 'Employee::GetHours'
c:\Documents and Settings\nerdfiles\My Documents\Projects\C++\PayrollApplication\main.cpp(5): error C2065: 'Display' : undeclared identifier