gpt4 book ai didi

c++ - 在 C++ 中创建一个对象数组

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:00 25 4
gpt4 key购买 nike

我正在尝试用 C++ 创建一个对象数组。

我正在从我公司类中的构造函数创建一个员工对象:

employee obj(int tempIdNum, double tempBase, double tempSales, double tempRate);

emp[tempcount]=obj; (this doesn't work?)

Emp是这里定义的数组名,在我公司的h文件中。

 Employee emp[4]; 

对不起佣金=员工.....这是我的佣金(员工)类 cpp

    using namespace std;


//----------------------------------------
//Name: default constructor
//Purpose: create a new object with attributes set to zero
//Parameters: none
//Returns: none
//----------------------------------------
Commission::Commission()
{
//cout << "In default constructor of Commission class" << endl;
idNum = 0;
base = 0.0;
rate = 0.0;
sales = 0.0;
}


//----------------------------------------
//Name: initializing constructor
//Purpose: initialize all attributes
//Parameters:
// idNum - new value for id Num
// base - new value for base amount
// sales - new value for sales amount
// rate - new value for rate fraction
//Returns: none
//----------------------------------------
Commission::Commission(int idNum, double base, double sales, double rate)
{
//cout << "In initializing constructor of Commission class" << endl;
this->idNum = idNum;
this->base = base;
this->sales = sales;
this->rate = rate;
}

//----------------------------------------
//Name: copy constructor
//Purpose: constructor a new object from an existing object
//Parameters:
// emp - current employee object
//Returns: none
//----------------------------------------
Commission::Commission(const Commission& emp)
{
//cout << "In copy constructor of Commission class" << endl;
idNum = emp.idNum;
base = emp.base;
sales = emp.sales;
rate = emp.rate;
}

//----------------------------------------
//Name: operator=
//Purpose: The copy assignment method copies the rhs object
// into the lhs object
//Parameters:
// rhs - object on the right hand side of the = sign
//Returns: nothing
//----------------------------------------
void Commission::operator=(const Commission& rhs)
{
//cout << "In copy assignment of Commission class" << endl;
idNum = rhs.idNum;
base = rhs.base;
sales = rhs.sales;
rate = rhs.rate;
}

//----------------------------------------
//Name: destructor
//Purpose: destruct object and print id num
//Parameters: none
//Returns:
//----------------------------------------
Commission::~Commission()
{
//cout << "In destructor of Commission class for id num: " << idNum << endl;
}

//----------------------------------------
//Name: setIdNum
//Purpose: set id num to a new value
//Parameters:
// newIdNum - new value for id num
//Returns: true if new id num is between 0 and 999, inclusively
// otherwise false
//----------------------------------------
bool Commission::setIdNum(int newIdNum)
{
if (newIdNum >= 0 && newIdNum <= 999)
{
idNum = newIdNum;
return true;
}
else
return false;
}

//----------------------------------------
//Name: setBase
//Purpose: set base to a new value
//Parameters:
// newBase - new value for base
//Returns: true if new base is greater zero; otherwise false
//----------------------------------------
bool Commission::setBase(double newBase)
{
if (newBase > 0.0)
{
base = newBase;
return true;
}
else
return false;
}

//----------------------------------------
//Name: setRate
//Purpose: set the commission rate
//Parameters:
// newRate - new commission rate as a percentage
//Returns: true if rate greater than zero and less than or equal to 0.20
//----------------------------------------
bool Commission::setRate(double newRate)
{
if (newRate > 0.0 && newRate <= 0.20)
{
rate = newRate;
return true;
}
else
return false;
}

//----------------------------------------
//Name: setSales
//Purpose: set sales to a new amount
//Parameters:
// newSales - new amount of sales
//Returns: true if sales is greater than or equal to zero; otherwise false
//----------------------------------------
bool Commission::setSales(double newSales)
{
if (newSales >= 0.0)
{
sales = newSales;
return true;
}
else
return false;
}

//----------------------------------------
//Name: getIdNum
//Purpose: get the current id num
//Parameters: none
//Returns: current id num
//----------------------------------------
int Commission::getIdNum()
{
return idNum;
}

//----------------------------------------
//Name: getBase
//Purpose: get the current base amount of salary
//Parameters: none
//Returns: current base salary
//----------------------------------------
double Commission::getBase()
{
return base;
}

//----------------------------------------
//Name: getRate
//Purpose: get the current commission rate as fraction
//Parameters: none
//Returns: current commission rate
//----------------------------------------
double Commission::getRate()
{
return rate;
}

//----------------------------------------
//Name: getSales
//Purpose: get current amount of sales
//Parameters: none
//Returns: current amount of sales
//----------------------------------------
double Commission::getSales()
{
return sales;
}

//----------------------------------------
//Name: calcSalary
//Purpose: calculate commission as base + sales x commission rate
//Parameters: none
//Returns: amount of commission
//----------------------------------------
double Commission::calcSalary()
{
return (base + sales * rate);
}





and here is its .h


#include <string>
using namespace std;

#ifndef Commission_H
#define Commission_H

class Commission
{
private:
int idNum; //id number of employee
double base; //base salary
double rate; //rate of commission as fraction
double sales; //sales on which commission rate applies

public:
//constructors
Commission(); //default constructor
Commission(int idNum, double base, double sales, double rate); //constructor with idNum
Commission(const Commission& orig); //copy constructor

//destructor
~Commission( );

//copy assignment
void operator=(const Commission& rhs);

//mutators
bool setIdNum(int idNum); //set id num
bool setBase(double base); //set base salary
bool setRate(double rate); //set rate of commission
bool setSales(double sales); //set amount of sales for commission

//accessors
int getIdNum(); //get id num;
double getBase(); //get base salary
double getRate(); //get commission rate
double getSales(); //get sales for commission

//calculate salary
double calcSalary(); //calculate commission
};

#endif

最佳答案

如错误消息所述:employee 类必须具有可访问的 operator= 才能编译此代码。您可能已经知道,如果您自己不提供复制赋值运算符,编译器将声明一个。

至于错误的原因,我怀疑 employeeconst 数据成员或其他任何使隐式定义的运算符格式错误的东西 (12.8/12) :

A program is illformed if the class for which a copy assignment operator is implicitly defined has:

  • a nonstatic data member of const type, or
  • a nonstatic data member of reference type, or
  • a nonstatic data member of class type (or array thereof) with an inaccessible copy assignment operator, or
  • a base class with an inaccessible copy assignment operator.

关于c++ - 在 C++ 中创建一个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com