函数不将数据存储到结构数组
function does not store data to struct array
我有一个函数,假设根据员工类型和工作时间计算员工时间。如果管理层不分时间直接支付工资,如果工会加班费。
我有两个结构数组,一个用于员工数据,另一个用于他们的时间表。我遇到的问题是我不认为我的函数正在存储计算的数据。就像我运行打印功能时一样,我得到零。
我被困在这个上面一段时间了,我试图尽我所能调试我的代码,但我没有得到任何东西,它编译没有问题。
我的问题是什么?还是问题?
C++
//*********************************************************************************************
// Structure to hold employee ID, Name, Pay rate per hour, Employee type
//*********************************************************************************************
struct employeeRecord {
int IDnum; // holds employee id number
string name; // holds employess name
float payRate; // holds employee pay rate
int empType; // holds employee type
};
//*********************************************************************************************
// structure to hold time sheet
//*********************************************************************************************
struct timeSheet{
float hoursWorked; //hours worked
float grossPay; // gross pay
float netPay; // net pay
float taxAmount; // tax amount deduction
};
//*********************************************************************************************
// function prototype
//*********************************************************************************************
void addEmployee(employeeRecord *employee, int &index);
void addTime(timeSheet *time, employeeRecord *employee, int &index);
void calcTime(timeSheet *time, employeeRecord *employee, int &index, float taxRate);
void outTime(timeSheet *time, employeeRecord *employee, int &index);
//*********************************************************************************************
// main function
//*********************************************************************************************
int main(){
float taxRate = .15; // taxrate on pay
char choice; // holds user choice option
int index = 0; // index of array
// create struct arrays to hold data
employeeRecord employee[2];
timeSheet time[2];
//*********************************************************************************************
// ^^^^^^not my entire main function^^^^^Can post if needed^^^^^^
//*********************************************************************************************
/*********************************************************************************************
// function to to calculate timesheet
//*********************************************************************************************
void calcTime(timeSheet *time, employeeRecord *employee, int &index, float taxRate){
index = 0; // set index back to zero to start at first array index
float tempHours; //temp hour hold
float overTime; // overTime hours
float hoursWorked = time[index].hoursWorked; //hours worked
float grossPay = time[index].grossPay; //employes's gross pay
float netPay = time[index].netPay; //employes's net pay
float taxAmount = time[index].taxAmount; ////employes's tax deduction
int empType = employee[index].empType; // employee type
float payRate = employee[index].payRate; // employes pay rate
for (int i=0; i < 2; i++){
if (empType == 0){
if(hours > 40){
tempHours = 40;
overTime = hoursWorked - 40;
grossPay = (overTime * (payRate * 1.5)) + (tempHours * payRate);
taxAmount = grossPay * taxRate;
netPay = grossPay - taxAmount;
}
else{
grossPay = hoursWorked * payRate;
taxAmount = grossPay * taxRate;
netPay = grossPay - taxAmount;
}
}
else{
grossPay = hoursWorked * payRate;
taxAmount = grossPay * taxRate;
netPay = grossPay - taxAmount;
}
// increase index number
index++;
}
}
在计算时间中,您只将内容存储在局部变量中。
float hoursWorked = time[index].hoursWorked; //hours worked
这将创建一个名为 hoursWorked
的局部变量,当它超出范围时,该变量会消失,它不会创建对 time[index].hoursWorked
的快捷方式引用。您所做的所有工作都发生在这些临时当地人身上,根本不影响时间或员工。
如果将其更改为:
float& hoursWorked = time[index].hoursWorked; //hours worked
这使得hoursWorked
成为time[index].hoursWorked
的引用或别名,因此您对它所做的任何更改实际上都会更改time[index].hoursWorked
。
这应该使代码按预期工作。
您是否尝试过更改函数标头以将结构作为数组指针传递?
void addTime(timeSheet *time[], employeeRecord *employee[], int &index){
该函数calcTime()
仅写入本地值,这些值是结构中这些值的副本。如果要对存储的值进行操作,则应使用引用:
// Assignments to netPay will modify timesheet[i]
float& netPay = timesheet[i].netPay
// netPay is a copy.
float netPay = timesheet[i].netPay
你已经有了基础,让我们改进你已经拥有的东西。我将把你的结构重命名employeeRecord
EmployeeInfo
,你会看到我为什么这样做。
stdafx.h
应至少具有 iostream、string 和内存,以及您需要包含的任何其他 std 库容器、方法和算法。
员工记录.h
#ifndef EMPLOYEE_RECORD_H
#define EMPLOYEE_RECORD_H
struct EmployeeInfo {
std::string name;
unsigned ID;
unsigned type;
float payRate;
}; // EmployeeInfo
struct TimeSheet {
float hoursWorked;
float grossPay;
float netPay;
float taxAmount;
}; // TimeSheet
class EmployeeRecord {
public:
static const float m_fTaxRate;
static const float m_fFullTimeHours;
static const float m_fOverTimeRate;
enum EmployeeType {
ET_MANAGEMENT = 1,
ET_UNION,
}; // EmployeeType
private:
std::shared_ptr<EmployeeInfo> m_pEmployeeInfo;
std::shared_ptr<TimeSheet> m_pTimeSheet;
public:
EmployeeRecord();
explicit EmployeeRecord( const std::string& strName );
EmployeeRecord( const std::string& strName, const unsigned id );
EmployeeRecord( const std::string& strName, const unsigned id, const EmployeeType type );
EmployeeRecord( const std::string& strName, const unsigned id, const EmployeeType type, const float payRate );
EmployeeRecord( const std::string& strName, const unsigned id, const EmployeeType type, const float payRate, const float hoursWorked );
EmployeeRecord(const std::string& strName, const unsigned id, const unsigned type);
EmployeeRecord(const std::string& strName, const unsigned id, const unsigned type, const float payRate);
EmployeeRecord(const std::string& strName, const unsigned id, const unsigned type, const float payRate, const float hoursWorked);
explicit EmployeeRecord( const EmployeeInfo& info );
EmployeeRecord( const EmployeeInfo&, const float hours );
~EmployeeRecord();
// To set Individual Parameters To The Employee Info Struct
void setName( const std::string& strName );
void setId( const unsigned id );
void setType( const EmployeeType type );
void setType( const unsigned type );
void setPayRate( const float rate );
// To Set A Fully Predefined EmployeeInfo
void setEmployeeInfo( const EmployeeInfo& info );
// To Retrieve Individual Parameters From EmpolyeeInfo
std::string getName() const;
unsigned getId() const;
float getPayRate() const;
EmployeeType getEmployeeType() const;
unsigned getEmployeeUType() const;
// To Retrieve An Entire EmployeeInfo
EmployeeInfo getEmployeeInfo() const;
// To Add Individual Parameters To The TimeSheet Struct
void setHoursWorked( const float hours );
// Calculate Values In Time Sheet
void calculateWages();
// To Get Individual Parameters From Time Sheet
float getHoursWorked() const;
float getGrossPay() const;
float getNetPay() const;
float getTaxAmount() const;
// Retrieve An Entire Employee TimeSheet
TimeSheet getTimeSheet() const;
}; // EmployeeRecord
#endif // EMPLOYEE_RECORD_H
员工记录.cpp
#include "stdafx.h"
#include "EmployeeRecord.h"
const float EmployeeRecord::m_fTaxRate = 0.15f;
const float EmployeeRecord::m_fFullTimeHours = 40.0f;
const float EmployeeRecord::m_fOverTimeRate = 1.5f;
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord() :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
// m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = std::string();
m_pEmployeeInfo->ID = 0;
m_pEmployeeInfo->type = 0;
m_pEmployeeInfo->payRate = 0.0f;
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const std::string& name ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = 0;
m_pEmployeeInfo->type = 0;
m_pEmployeeInfo->payRate = 0.0f;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const std::string& name, const unsigned id ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = 0;
m_pEmployeeInfo->payRate = 0.0f;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset(new TimeSheet);
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const std::string& name, const unsigned id, const EmployeeType type ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = static_cast<unsigned>( type );
m_pEmployeeInfo->payRate = 0.0f;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset(new TimeSheet);
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const std::string& name, const unsigned id, const EmployeeType type, float rate ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeRecord
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = static_cast<unsigned>( type );
m_pEmployeeInfo->payRate = rate;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
// m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord(const std::string& name, const unsigned id, const EmployeeType type, const float rate, const float hours) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
// m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = static_cast<unsigned>( type );
m_pEmployeeInfo->payRate = rate;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
// m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = hours;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
// Since We Have Enough Data Calculate Wages & Taxes Here
calculateWages();
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord(const std::string& name, const unsigned id, const unsigned type) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = type;
m_pEmployeeInfo->payRate = 0.0f;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset(new TimeSheet);
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord(const std::string& name, const unsigned id, const unsigned type, float rate) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeRecord
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
//m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = type;
m_pEmployeeInfo->payRate = rate;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
// m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord(const std::string& name, const unsigned id, const unsigned type, const float rate, const float hours) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>();
// m_pEmployeeInfo.reset( new EmployeeInfo );
m_pEmployeeInfo->name = name;
m_pEmployeeInfo->ID = id;
m_pEmployeeInfo->type = type;
m_pEmployeeInfo->payRate = rate;
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
// m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = hours;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
// Since We Have Enough Data Calculate Wages & Taxes Here
calculateWages();
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const EmployeeInfo& info ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>( info );
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
//m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = 0.0f;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
} // EmployeeRecord
// ----------------------------------------------------------------------------
// EmployeeRecord()
EmployeeRecord::EmployeeRecord( const EmployeeInfo& info, const float hours ) :
m_pEmployeeInfo( nullptr ),
m_pTimeSheet( nullptr ),
m_bCalcWagesHasBeenCalled( false ) {
// EmployeeInfo
m_pEmployeeInfo = std::make_shared<EmployeeInfo>( info );
// TimeSheet
m_pTimeSheet = std::make_shared<TimeSheet>();
// m_pTimeSheet.reset( new TimeSheet );
m_pTimeSheet->hoursWorked = hours;
m_pTimeSheet->grossPay = 0.0f;
m_pTimeSheet->netPay = 0.0f;
m_pTimeSheet->taxAmount = 0.0f;
// Since We Have Enough Data Calculate Wages & Taxes Here
calculateWages();
} // EmployeeRecord
// ----------------------------------------------------------------------------
// ~EmployeeRecord()
EmployeeRecord::~EmployeeRecord() {
m_pEmployeeInfo.reset();
m_pEmployeeInfo = nullptr;
m_pTimeSheet.reset();
m_pTimeSheet = nullptr;
} // ~EmployeeRecord
// ----------------------------------------------------------------------------
// setName()
void EmployeeRecord::setName( const std::string& name ) {
m_pEmployeeInfo->name = name;
} // setName
// ----------------------------------------------------------------------------
// setId()
void EmployeeRecord::setId( unsigned id ) {
m_pEmployeeInfo->ID = id;
} // setId
// ----------------------------------------------------------------------------
// setType()
void EmployeeRecord::setType( const EmployeeType type ) {
if ( m_bCalcWagesHasBeenCalled ) {
if ( m_pEmployeeInfo->type != static_cast<unsigned>( type ) ) {
m_pEmployeeInfo->type = static_cast<unsigned>( type );
calculateWages();
}
} else {
m_pEmployeeInfo->type = static_cast<unsigned>( type );
}
} // setType
// ----------------------------------------------------------------------------
// setType()
void EmployeeRecord::setType( const unsigned type ) {
if ( m_bCalcWagesHasBeenCalled ) {
if ( m_pEmployeeInfo->type != type ) {
m_pEmployeeInfo->type = type;
calculateWages();
}
} else {
m_pEmployeeInfo->type = type;
}
} // setType
// ----------------------------------------------------------------------------
// setPayRate()
void EmployeeRecord::setPayRate( const float rate ) {
if ( m_bCalcWagesHasBeenCalled ) {
if ( m_pEmployeeInfo->payRate != rate ) {
m_pEmployeeInfo->payRate = rate;
calculateWages();
}
} else {
m_pEmployeeInfo->payRate = rate;
}
} // setPayRate
// ----------------------------------------------------------------------------
// setEmployeeInfo()
void EmployeeRecord::setEmployeeInfo( const EmployeeInfo& info ) {
if ( nullptr == m_pEmployeeInfo ) {
m_pEmployeeInfo = std::make_shared<EmployeeInfo>( info );
} else {
m_pEmployeeInfo.reset();
m_pEmployeeInfo = std::make_shared<EmployeeInfo>( info );
}
} // setEmployeeInfo
// ----------------------------------------------------------------------------
// getName()
std::string EmployeeRecord::getName() const {
return m_pEmployeeInfo->name;
} // getName
// ----------------------------------------------------------------------------
// getId()
unsigned EmployeeRecord::getId() const {
return m_pEmployeeInfo->ID;
} // getId
// ----------------------------------------------------------------------------
// getPayRate()
float EmployeeRecord::getPayRate() const {
return m_pEmployeeInfo->payRate;
} // getPayRate
// ----------------------------------------------------------------------------
// getEmployeeType()
EmployeeRecord::EmployeeType EmployeeRecord::getEmployeeType() const {
return static_cast<EmployeeType>( m_pEmployeeInfo->type );
} // getEmployeeType
// ----------------------------------------------------------------------------
// getEmployeeUType()
unsigned EmployeeRecord::getEmployeeUType() const {
return m_pEmployeeInfo->type;
} // getEmployeeUType
// ----------------------------------------------------------------------------
// getEmployeeInfo
EmployeeInfo EmployeeRecord::getEmployeeInfo() const {
return *m_pEmployeeInfo.get();
} // getEmployeeInfo
// ----------------------------------------------------------------------------
// setHoursWorked()
void EmployeeRecord::setHoursWorked( const float hours ) {
if ( m_bCalcWagesHasBeenCalled ) {
if ( m_pTimeSheet->hoursWorked != hours ) {
m_pTimeSheet->hoursWorked = hours;
calculateWages();
}
} else {
m_pTimeSheet->hoursWorked = hours;
}
} // setHoursWorked
// ----------------------------------------------------------------------------
// calculateWages()
void EmployeeRecord::calculateWages() {
// Error Cases
if ( m_pEmployeeInfo == nullptr ) {
std::cout << "Error: m_pEmployeeInfo = nullptr; not enough information to calculate wages and taxes." << std::endl;
return;
}
if ( m_pEmployeeInfo->payRate == 0.0f ) {
std::cout << "Error: payRate = " << m_pEmployeeInfo->payRate << " can not caculate wages and taxes." << std::endl;
return;
}
if ( m_pEmployeeInfo->type == 0 ) {
std::cout << "Error: EmployeeType = " << m_pEmployeeInfo->type << " can not determine which pay scale to use." << std::endl;
return;
}
// Warning Cases
if ( m_pEmployeeInfo->name.empty() ) {
std::cout << "Warning: It is possible to calculate wages and taxes, but no name available to assign it to." << std::endl;
}
if ( m_pEmployeeInfo->ID == 0 || m_pEmployeeInfo->ID == -1 ) {
std::cout << "Warning: It is possible to calculate wages and taxes, but current employeeID is invalid." << std::endl;
}
if ( m_pTimeSheet->hoursWorked == 0 ) {
std::cout << "Warning: hours worked = " << m_pTimeSheet->hoursWorked << " it is possible that this employee worked 0 hours." << std::endl;
}
switch ( static_cast<EmployeeType>( m_pEmployeeInfo->type ) ) {
case ET_MANAGEMENT: {
m_pTimeSheet->grossPay = m_pEmployeeInfo->payRate * m_pTimeSheet->hoursWorked;
m_pTimeSheet->taxAmount = m_pTimeSheet->grossPay * m_fTaxRate;
m_pTimeSheet->netPay = m_pTimeSheet->grossPay - m_pTimeSheet->taxAmount;
break;
}
case ET_UNION: {
float overTimeHours = 0.0f;
if ( m_pTimeSheet->hoursWorked > m_fFullTimeHours ) {
overTimeHours = m_pTimeSheet->hoursWorked - m_fFullTimeHours;
}
m_pTimeSheet->grossPay = (m_pEmployeeInfo->payRate * m_fFullTimeHours) + (overTimeHours * m_fOverTimeRate);
m_pTimeSheet->taxAmount = m_pTimeSheet->grossPay * m_fTaxRate;
m_pTimeSheet->netPay = m_pTimeSheet->grossPay - m_pTimeSheet->taxAmount;
break;
}
}
m_bCalcWagesHasBeenCalled = true;
} // calculateWages
// ----------------------------------------------------------------------------
// getHoursWorked()
float EmployeeRecord::getHoursWorked() const {
return m_pTimeSheet->hoursWorked;
} // getHoursWorked
// ----------------------------------------------------------------------------
// getGrossPay()
float EmployeeRecord::getGrossPay() const {
return m_pTimeSheet->grossPay;
} // getGrossPay
// ----------------------------------------------------------------------------
// getNetPay()
float EmployeeRecord::getNetPay() const {
return m_pTimeSheet->netPay;
} // getNetPay
// ----------------------------------------------------------------------------
// getTaxAmount()
float EmployeeRecord::getTaxAmount() const {
return m_pTimeSheet->taxAmount;
} // getTaxAmount
// ----------------------------------------------------------------------------
// getTimeSheet()
TimeSheet EmployeeRecord::getTimeSheet() const {
return *m_pTimeSheet.get();
} // getTimeSheet
此类有几个构造函数:一个是默认的,它将创建一个空实例,稍后需要通过传入单个字段或传入所需的结构来填充该实例。它有部分构造函数,其余的必须在以后填写。它有几个完整的构造函数,如果成功构造,它们将自动调用该方法来计算工资和税款。以下是一些设置函数,它们将检查是否已调用calculateWages()
以及传递的值是否存在差异,如果两种情况都为 true,那么它将更新该字段并再次调用calculateWages()
,如果没有,它只会添加值。
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组