I cant figure out why I am getting these class erros....can someone help..I know this alot of code here but I would appreciate any kind of help. here are my errors:
Code:
Compiling...
checkout.cpp
c:\unzipped\13sep\grocery.h(28) : error C2629: unexpected 'class Grocery ('
c:\unzipped\13sep\grocery.h(28) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
c:\unzipped\13sep\grocery.h(32) : error C2061: syntax error : identifier 'istream'
c:\unzipped\13sep\grocery.h(33) : error C2061: syntax error : identifier 'ostream'
c:\unzipped\13sep\grocery.h(37) : error C2146: syntax error : missing ';' before identifier 'Description'
c:\unzipped\13sep\grocery.h(37) : error C2433: 'string' : 'inline' not permitted on data declarations
c:\unzipped\13sep\grocery.h(37) : error C2501: 'string' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(37) : warning C4183: 'Description': member function definition looks like a ctor, but name does not match enclosing class
c:\unzipped\13sep\grocery.h(48) : error C2146: syntax error : missing ';' before identifier 'description'
c:\unzipped\13sep\grocery.h(48) : error C2501: 'string' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(48) : error C2501: 'description' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(61) : error C2061: syntax error : identifier 'ostream'
c:\unzipped\13sep\checkout.cpp(29) : error C2660: 'ReadGrocery' : function does not take 1 parameters
c:\unzipped\13sep\checkout.cpp(36) : error C2660: 'WriteStock' : function does not take 1 parameters
c:\unzipped\13sep\checkout.cpp(37) : error C2660: 'WriteStock' : function does not take 1 parameters
c:\unzipped\13sep\checkout.cpp(73) : error C2440: 'initializing' : cannot convert from 'int' to 'class std::basic_string,class std::allocator >'
No constructor could take the source type, or constructor overload resolution was ambiguous
c:\unzipped\13sep\checkout.cpp(111) : warning C4508: 'main' : function should return a value; 'void' return type assumed
grocery.cpp
c:\unzipped\13sep\grocery.h(28) : error C2629: unexpected 'class Grocery ('
c:\unzipped\13sep\grocery.h(28) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
c:\unzipped\13sep\grocery.h(32) : error C2061: syntax error : identifier 'istream'
c:\unzipped\13sep\grocery.h(33) : error C2061: syntax error : identifier 'ostream'
c:\unzipped\13sep\grocery.h(37) : error C2146: syntax error : missing ';' before identifier 'Description'
c:\unzipped\13sep\grocery.h(37) : error C2433: 'string' : 'inline' not permitted on data declarations
c:\unzipped\13sep\grocery.h(37) : error C2501: 'string' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(37) : warning C4183: 'Description': member function definition looks like a ctor, but name does not match enclosing class
c:\unzipped\13sep\grocery.h(48) : error C2146: syntax error : missing ';' before identifier 'description'
c:\unzipped\13sep\grocery.h(48) : error C2501: 'string' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(48) : error C2501: 'description' : missing storage-class or type specifiers
c:\unzipped\13sep\grocery.h(61) : error C2061: syntax error : identifier 'ostream'
c:\unzipped\13sep\grocery.cpp(21) : error C2511: 'ReadGrocery' : overloaded member function 'void (class std::basic_istream > &)' not found in 'Grocery'
c:\unzipped\13sep\grocery.h(21) : see declaration of 'Grocery'
c:\unzipped\13sep\grocery.cpp(28) : error C2511: 'WriteGrocery' : overloaded member function 'void (class std::basic_ostream > &)' not found in 'Grocery'
c:\unzipped\13sep\grocery.h(21) : see declaration of 'Grocery'
c:\unzipped\13sep\grocery.cpp(81) : error C2511: 'WriteStock' : overloaded member function 'void (class std::basic_ostream > &)' not found in 'Stockroom'
c:\unzipped\13sep\grocery.h(55) : see declaration of 'Stockroom'
Error executing cl.exe.
grocery.h file
Code:
#ifndef GROCERYH
#define GROCERYH
#include <iostream>
#include <fstream>
#include <string>
const double TAXRATE = 0.075;
// Item in grocery inventory
class Grocery
{
public:
// Constructors
//Grocery ( ) : product(-1), description(""), price(0.0), taxable(' ') { }
Grocery ( ) { }
//Grocery ( int prod, string desc, double cost, char tax ) :
// product(prod), description(desc), price(cost), taxable(tax) { }
Grocery ( int prod, string desc, double cost, char tax )
{ product = prod; description = desc; price = cost; taxable = tax; }
// Input/output
void ReadGrocery ( istream& in );
void WriteGrocery ( ostream& out );
// Access functions
inline int Product ( ) { return(product); }
inline string Description ( ) { return(description); }
inline double Price ( ) { return(price); }
inline char Taxable ( ) { return(taxable); }
// Calculations
inline double Sale ( int quantity ) { return(price * quantity); }
inline double Tax ( int quantity ) {
return(taxable != 'T' ? 0.00 : Sale(quantity) * TAXRATE); }
private:
int product; // product code
string description; // description
double price; // unit price
char taxable; // T = Taxable, N = Non-taxable
};
// Grocery stockroom (all inventory)
class Stockroom
{
public:
// Constructor
Stockroom (int shelves);
// Output
void WriteStock ( ostream& out );
// Enter food into stock
bool BuyStock (Grocery food);
// Search for prod.
Grocery* GroceryClerk (int prod);
private:
Grocery *pantry; // groceries in stock
int groceries, // # groceries in stock
stockshelves; // max. groceries in stock
};
#endif
grocery.cpp file
Code:
#include <iostream>
#include <iomanip>
#include <string>
#include "grocery.h"
using namespace std;
// Grocery
// Input Grocery from in.
void Grocery::ReadGrocery ( istream& in )
{
in >> product >> description >> price >> taxable;
char eol; in >> eol; in.unget(); // Position after eol.
}
// Output Grocery to out.
void Grocery::WriteGrocery ( ostream& out )
{
out << setiosflags(ios::fixed) << setiosflags(ios::showpoint);
out.precision(2); // 2 decimals
string desc = description;
int descblanks = 12 - desc.length() + 1;
for (int d = 0; d < descblanks; d++) desc += ' ';
out << setw(5) << product << " " << desc << setw(4) << price
<< " " << taxable;
}
// Stockroom
// A Stockroom for shelves items
Stockroom::Stockroom (int shelves)
{
pantry = new Grocery[shelves];
stockshelves = shelves;
groceries = 0;
}
// BuyStock: Include Grocery in Stockroom
// Returns true if food added to stock; false otherwise
bool Stockroom::BuyStock (Grocery food)
{
if ((groceries+1) >= stockshelves) return(false);
for (int g = 0; g < groceries; g++)
if (food.Product() < pantry[g].Product()) {
for (int g1 = groceries++; g1 >= g; g1--)
pantry[g1+1] = pantry[g1];
pantry[g] = food;
return(true);
} else if (food.Product() == pantry[g].Product()) return(true);
pantry[groceries++] = food;
return(true);
}
// GroceryClerk: Search Stockroom for prod
// Returns: Grocery* except NULL when prod not in inventory
Grocery* Stockroom::GroceryClerk (int prod)
{
int low = 0;
int high = groceries-1;
while (low <= high) {
int mid = (low + high) / 2;
if (pantry[mid].Product() == prod) return(&pantry[mid]);
if (pantry[mid].Product() < prod) low = mid + 1;
else high = mid - 1;
}
return(NULL);
}
// Output all items in Stockroom to out.
void Stockroom::WriteStock ( ostream& out )
{
for (int g = 0; g < groceries; g++) {
pantry[g].WriteGrocery(out);
out << endl; }
out << endl;
}
checkout.cpp
Code:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include "grocery.h"
using namespace std;
const int STOCKROOM = 30; // Max. items in inventory
const char *INVENT = "Invent.in"; // inventory file
const char *RECEIPTS = "Receipts.out"; // file of receipts
int main ( )
{
Stockroom stockroom(30);
ifstream invent(INVENT); // Read inventory
while (!invent.eof()) {
Grocery food;
food.ReadGrocery(invent);
if (stockroom.BuyStock(food)) continue;
cerr << "Stockroom is full!" << endl;
exit(-1);
}
ofstream receipts(RECEIPTS);
stockroom.WriteStock(receipts); // List inventory on receipt
stockroom.WriteStock(cout); // and onto screen
int customer = 1;
string more;
do {
double bought(0.00), tax(0.00);
receipts << endl << "Customer " << customer << endl;
cout << "Enter purchases for customer " << customer++ << endl
<< "Enter product code 0 to end purchases." << endl << endl;
cout << setiosflags(ios::fixed) << setiosflags(ios::showpoint);
cout.precision(2);
receipts << setiosflags(ios::fixed) << setiosflags(ios::showpoint);
receipts.precision(2);
int prod, quantity;
do {
//cout << "Enter product code and quantity: ";
cin >> prod;
if (prod > 0) {
Grocery *product = stockroom.GroceryClerk(prod);
cin >> quantity;
if (product == NULL) { // product not found?
receipts << "*** item " << prod << " not in inventory ***" << endl;
cout << "*** item " << prod << " not in inventory ***" << endl;
} else if ((quantity < 1) || (10 < quantity)) {
receipts << "*** " << quantity << " of item " << prod <<
" are not for sale ***" << endl;
cout << "*** " << quantity << " of item " << prod <<
" are not for sale ***" << endl;
} else { // sale
bought += product->Sale(quantity);
tax += product->Tax(quantity);
string desc = product->Description();
int descblanks = 12 - desc.length() + 1;
for (int d = 0; d < descblanks; d++)
desc += ' ';
receipts << desc << setw(2) << quantity << " @ " << setw(4) <<
product->Price() << setw(6) << product->Sale(quantity)
<< (product->Tax(quantity) > 0.00 ? " TX" : " ") << endl;
/*
cout << desc << setw(2) << quantity << " @ " << setw(4) <<
product->Price() << setw(6) << product->Sale(quantity)
<< (product->Tax(quantity) > 0.00 ? " TX" : " ") << endl;
*/
}
}
} while (prod != 0);
if (bought > 0.00) { // bought anything?
receipts << endl << " Subtotal "
<< setw(5) << bought << endl <<
" Tax "
<< setw(5) << tax << endl << endl <<
" Total "
<< setw(5) << (bought + tax) << endl << endl;
/*
cout << endl << " Subtotal "
<< setw(5) << bought << endl <<
" Tax "
<< setw(5) << tax << endl << endl <<
" Total "
<< setw(5) << (bought + tax) << endl << endl;
*/
}
cout << "Is there another customer? (Y/N) ";
cin >> more;
} while (more == "Y");
if (more == "N")
cout << "Close the store for the night. Bye." << endl;
}