Я пытаюсь написать два класса: «Продажа и регистрация» для моего класса OO. Вот два заголовка.Доступ к данным частного участника из родственного класса
Продажа заголовок:
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;
};
В классе регистра мне нужно держать динамический массив объектов продажи. Я могу это сделать. Моя проблема связана с функцией RingUpSale() в «Register». Мне нужно иметь возможность доступа и изменения данных частного участника «Продажи» от этой функции. Например:
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 Эта функция позволяет тип элемента и базовая цена продажи будет принят в качестве параметров. Эта функция должна хранить продажу в списке продаж, и она должна соответствующим образом обновить сумму в кассе . Товары, которые будут куплены, добавят деньги в реестр. Помните, что налог с продаж должен быть добавлен к базовой цене проданного предмета. Если тип продажи - КРЕДИТ, то вы должны вычесть сумму из регистра.
Кроме этого:
- (Подсказка: имейте в виду, что в реестре, вы оставляете динамический массив Продажа объектов Это означает, что большинство из этих функций будет использовать этот массив, чтобы сделать. их работа - и они могут также вызвать функции класса класса продажи).
Если вы не разрешается изменять код класса 'Sale', то это будет невозможно. –