1

我正在尝试为我的 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 对象的动态数组。我能够做到这一点。我的问题是“注册”中的 RingUpSale() 函数。我需要能够从该功能访问和修改“销售”的私有成员数据。例如:

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() 函数说明:

  • RingUpSale 此函数允许将销售的商品类型和基本价格作为参数传入。这个函数应该将销售存储在销售列表中,并且应该适当地更新收银机中的金额。购买的物品会在收银机上加钱。请记住,销售税必须添加到任何已售商品的基本价格中。如果销售类型是 CREDIT,那么您应该从登记册中扣除金额。

还有这个:

-(提示:请记住,在寄存器内部,您保留了一个 Sale 对象的动态数组。这意味着这些函数中的大多数将使用这个数组来完成它们的工作——它们还可以调用 Sale 类的成员函数)。

4

2 回答 2

1

制作 getter 和 setter:

int getX() { return _x; } void setX(int x_) { _x = x_; } private: int _x; };

x 是你想要的变量吗

于 2012-06-23T20:34:54.807 回答
0

看起来该Sale::MakeSale()功能旨在处理这些税收计算细节。给定一个项目和一个基本价格,它会计算税收(如果需要)并更新total价值。

(我假设虽然你不能修改Sale.h,但你可以实现Sale.cpp。)

于 2012-06-23T20:39:27.640 回答