I am now dissecting each file piece by piece. The project consists of 2 header files and 2 definition files plus a main program utilizing both classes. One of the definition files (sales.cpp) compiles fine, the other one (register.cpp) is the one that produces 2 errors. I am going to provide the 2 header files that are needed to be included in the register.cpp, as well as the register.cpp file. Any help that can be given I will appreciate immensely.
sale.h
register.hCode:enum ItemType {BOOK, DVD, SOFTWARE, CREDIT}; class Sale { public: Sale(); // default constructor, // sets numerical member data to 0 void MakeSale(ItemType x, double amt); // the MakeSale function loads data into the Sale object. The // item and price are passed in. Compute tax and total. // (For store credits, tax is 0). 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) // for the Display function, output the sale item, the price, the tax, // and the total (all on one line). For store credit, the amounts // should be enclosed in < > symbols, to indicate a negative charge. // All monetary output should be in dollars and cents format, to two // decimal places. // Examples: Book $ 20.00 Tax: $ 1.40 Total: $ 21.40 // Credit <$ 15.00> Tax: $ 0.00 Total: <$ 15.00> 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 };
register.cppCode://register header file #include "sale.h" class Register { public: Register(int i, double amt);//allows ID number and starting amount //in register to be initialized when //object is created int GetID();//returns current ID number in the register to the //caller, accessor function double GetAmount();//return current amount in the register to //caller, accessor function void RingUpSale(ItemType c, double amt);//stores sale in sale list //also updates money amount //in register. //allows item type and sale //base price to be passed in void ShowLast();//displays only the info about last sale made void ShowAll();//Shows all of sales currently in sale list, one per line void Cancel();//cancels last sale in list double SalesTax(int n);//calculates and returns total amount of sales tax //for last n sales (i.e. most recent ones) private: int ID; double Amount; double sales_taxxx; double base_price; int numsales; Sale *sales; };
Code://definitions for register class #include <iomanip> #include <iostream> #include "Register.h" #include "sale.h" using namespace std; //Register definitions Register::Register(int i, double amt) { ID=i; Amount=amt; numsales=0; //parameters in register are intialized to 0 } int Register::GetID() { return ID;//returning current ID in register } double Register::GetAmount() { return Amount;//returning current amount in refrigerator } void Register::RingUpSale(ItemType c, double amt) { Sale *s; //create a new array //memcpy the old array into the new array byte by byte //set the old array to the new array. numsales++; s = new Sale[numsales]; memcpy(s, sales, sizeof(Sale)*(numsales-1)); s[numsales-1].MakeSale(c, amt); sales=s; if (c==CREDIT) { Amount-=amt; } else { Amount+=amt; } } void Register::ShowAll(void) { if (numsales==0) { cout<<"No Sales Have Been Made Silly...."; return; } for (int i=0;i<numsales;i++) { sales[i].Display(); } } void Register::ShowLast(void) { if (numsales==0) { cout<<"No Sales Have Been Made Silly...."; return; } sales[numsales-1].Display(); } void Register::Cancel(void) { { Sale *s; if (numsales==0) { cout<<"No Sales Have Been Made Silly...."; return; } //create a new array //memcpy the old array into the new array byte by byte //set the old array to the new array. if (s[numsales].Item()==CREDIT) { Amount+=s[numsales].Price(); } else { Amount-=s[numsales].Price(); } numsales--; s = new Sale[numsales]; memcpy(s, sales, sizeof(Sale)*(numsales)); sales=s; } } double Register::SalesTax(int n) { int t_n=0; double tax_total=0; if (n<0) { cout<<"Invalid Number..."<<endl; return 0; } //figure out how many to count if (n > numsales) { t_n=numsales; } else { t_n=n; } //count t_n recent items for (int i=(numsales-1);i>=(numsales-t_n);i--) tax_total+=sales[i].Tax(); return tax_total; }Code:Compiler errors: Code: sale.h(14) : error C2011: 'ItemType' : 'enum' type redefinition sale.h(17) : error C2011: 'Sale' : 'class' type redefinition



LinkBack URL
About LinkBacks


