だから私は私のOOクラスのためにこのプロジェクトをやっています。SaleとRegisterの2つのクラスを作成する必要があります。私は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 = 5;
int numSales;
Sale* sale;
};
そのため、今関数を作成しようとしていRingUpSale()
ますが、プライベートフィールドにアクセスできないようです。これが私のコードです:
void Register::RingUpSale(ItemType item, int basePrice){
if(numSales == listSize){
listSize += 5;
Sale * tempArray = new Sale[listSize];
memcpy(tempArray, sale, numSales * sizeof(Sale));
delete [] sale;
sale = tempArray;
}
sale[numSales]->item = item; //this works for some reason
sale[numSales]->total = basePrice; // this doesn't
if(item == 'CREDIT'){
sale[numSales]->tax = 0; // and this doesn't
sale[numSales]->total = basePrice; // and neither does this
amountMoney -= basePrice;
}
++numSales;
}
販売オブジェクトの合計フィールドと税金フィールドを設定しようとすると、Eclipseでエラーが発生します。
"Field 'total' cannot be resolved"
これがなぜなのか、どうやって修正するのかわかりません。どんな助けでもいただければ幸いです。そして、はい、必要に応じて#include "sale.h"
とを追加しました。#include "register.h"