我正在尝试为我的OO课写两个类,Sale和Register。这是两个标题。
销售标题:
enum ItemType {BOOK, DVD, SOFTWARE, CREDIT};
class Sale
{
public:
Sale(); // default constructor,
// sets numerical member data to 0
void MakeSale(ItemType x, double amt);
ItemType Item(); // Returns the type of item in the sale
double Price(); // Returns the price of the sale
double Tax(); // Returns the amount of tax on the sale
double Total(); // Returns the total price of the sale
void Display(); // outputs sale info (described below)
private:
double price; // price of item or amount of credit
double tax; // amount of sales tax (does not apply to credit)
double total; // final price once tax is added in.
ItemType item; // transaction type
};
注册标题:
class Register{
public:
Register(int ident, int amount);
~Register();
int GetID(){return identification;}
int GetAmount(){return amountMoney;}
void RingUpSale(ItemType item, int basePrice);
void ShowLast();
void ShowAll();
void Cancel();
int SalesTax(int n);
private:
int identification;
int amountMoney;
int listSize;
int numSales;
Sale* sale;
};
在Register类中,我需要保存一个Sale对象的动态数组。我能做到这一点。我的问题是'Register'中的RingUpSale()函数。我需要能够从该函数访问和修改“Sale”的私有成员数据。例如:
sale[numSales]->item = item;
sale[numSales]->total = basePrice; // Gets an error
if(item == CREDIT){
sale[numSales]->tax = 0; // Gets an error
sale[numSales]->total = basePrice; // Gets an error
amountMoney -= basePrice;
}
else {
sale[numSales]->tax = 0.07*basePrice; // Gets an error
sale[numSales]->total = (0.07*basePrice)+basePrice; // Gets an error
amountMoney += basePrice;
}
我不知道如何使这种访问成为可能。也许通过继承或朋友结构?
在你破坏这个设计之前,请记住这是作业,所以有愚蠢的限制。其中一个是我不能修改我写的'Sale.h'。我只能在'Register.h'中添加更多私有函数。
RingUpSale()函数描述:
还有:
- (提示:请记住,在寄存器中,您要保留一个Sale对象的动态数组。这个 意味着大多数这些函数将使用这个数组来完成他们的工作 - 他们也可以 要求销售集体成员职能)。
答案 0 :(得分:1)
制作getter和setter:
int getX() { return _x; }
void setX(int x_) { _x = x_; }
private:
int _x;
};
x是你想要的变量
答案 1 :(得分:0)
看起来Sale::MakeSale()
函数旨在处理这些税务计算详细信息。给定项目和基本价格,它将计算税额(如有必要)并更新total
值。
(我假设您虽然无法修改Sale.h
,但可以实施Sale.cpp
。)