-
June 1st, 2013, 12:01 PM
#1
no operator ""<<"" matches these operands error
I'm using the same type of write function for 3 classes. They all use the << operator. The Visual Studio error is giving me this error in my Date class but not in the other classes. I've been messing with this for a while and can't figure out what I may be missing. Can anybody help me?
Date class where error occurs
Code:
#ifndef H_DATE
#define H_DATE
#include <iostream>
#include <string>
#include <list>
using namespace std;
class Date
{
public:
Date();
Date(int, int, int, int, int);
void setDate(int, int, int, int, int);
int getYear();
int getMonth();
int getDay();
int getHour();
int getMinutes();
void writeDate(fstream &);
private:
int year;
int month;
int day;
int hour;
int minutes;
};
#endif
#include <iostream>
#include <string>
#include <list>
#include <iomanip>
#include "date.h"
using namespace std;
Date::Date()
{
setDate(0, 0, 0, 0, 0);
}
Date::Date(int y, int m, int d, int h, int min)
{
setDate(y, m, d, h, min);
}
void Date::setDate(int y, int m, int d, int h, int min)
{
year = y;
month = m;
day = d;
hour = h;
minutes = min;
}
int Date::getYear()
{ return year; }
int Date::getMonth()
{ return month; }
int Date::getDay()
{ return day; }
int Date::getHour()
{ return hour; }
int Date::getMinutes()
{ return minutes; }
void Date::writeDate(fstream &outfile)
{
outfile << year << " "; //each line in this function gives me the error
outfile << month << " ";
outfile << day << endl;
outfile << hour << " ";
outfile << minutes << endl;
}
Here is the Item class function that calls it and it works fine without the dates being printed
Code:
#ifndef H_ITEMS
#define H_ITEMS
#include <iostream>
#include <string>
#include <list>
#include <queue>
#include <iomanip>
#include "customers.h"
#include "date.h"
#include "bids.h"
using namespace std;
class Item
{
public:
Item();
Item(int, int, int, int, int, int, int,
int, int, int, int, int, string, double);
void setItem(int, int, int, int, int, int, int,
int, int, int, int, int, string, double, double, bool);
int getItemIDd();
string getItemName();
double getPrice();
bool getisSold();
double getTotalCommission();
double getCommission();
double getHighestBid();
void AddtoBids(Bid &);
void itemSold(const double COM_PER);
void findItem(int, bool &);
bool BidisEmpty();
void CalculateTotalCommission();
void printCustomersItems();
void printItemsForSale();
void printItemsSold();
void printItemsAndBiddingList();
void isCustomerItem(int, bool &);
void writeItem(fstream &);
private:
int itemID;
int cID;
string itemName;
double openingPrice;
bool isSold;
Date listDate;
Date endDate;
double commission;
static double totalCommission;
priority_queue <Bid> bidQueue;
vector <Bid>bidVec;
};
#endif
#include <iostream>
#include <string>
#include <list>
#include <queue>
#include <vector>
#include <iomanip>
#include "customers.h"
#include "date.h"
#include "items.h"
#include "bids.h"
using namespace std;
Item::Item()
{
itemID = 0;
cID = 0;
itemName = " ";
openingPrice = 0;
isSold = false;
commission = 0;
listDate.setDate(0, 0, 0, 0, 0);
endDate.setDate(0, 0, 0, 0, 0);
}
Item::Item(int y, int m, int d, int h, int min, int ey, int em, int ed, int eh, int emin,
int id, int cId, string i, double p):
listDate(y, m, h, d, min), endDate(ey, em, ed, eh, emin)
{
itemID = id;
cID = cId;
itemName = i;
openingPrice = p;
isSold = false;
commission = 0;
}
void Item::setItem(int ly, int lm, int ld, int lh, int lmin,
int ey, int em, int ed, int eh, int emin, int id, int cId, string i, double p, double c, bool s)
{
itemID = id;
cID = cId;
itemName = i;
openingPrice = p;
listDate.setDate(ly, lm, ld, lh, lmin);
isSold = s;
commission = c;
cout << "set Item commission " << commission << endl;
endDate.setDate(ey, em, ed, eh, emin);
}
void Item::AddtoBids(Bid &temp)
{
cout << temp.getItID() << " " << temp.getBid() << endl;
bidQueue.push(temp);
bidVec.push_back(temp);
}
void Item::itemSold(const double COM_PER)
{
isSold = true;
Bid sTemp = bidQueue.top();
commission = COM_PER * sTemp.getBid();
}
bool Item::BidisEmpty()
{ return (bidQueue.empty()); }
void Item::CalculateTotalCommission()
{
totalCommission += commission;
cout << "totalCommission " << totalCommission << endl;
}
void Item::findItem(int id, bool &found)
{
found = false;
if (this->itemID == id)
found = true;
}
void Item::isCustomerItem(int cid, bool &found)
{
found = false;
if (this->cID == cid)
found = true;
}
int Item::getItemIDd()
{ return itemID; }
string Item::getItemName()
{ return itemName; }
double Item::getPrice()
{ return openingPrice; }
bool Item::getisSold()
{ return isSold; }
double Item::getCommission()
{ return commission; }
double Item::getHighestBid()
{
Bid sTemp = bidQueue.top();
return sTemp.getBid();
}
double Item::getTotalCommission()
{ return totalCommission; }
void Item::printItemsForSale()
{
cout << "Item ID: " << itemID << endl;
cout << "Name of item: " << itemName << endl;
cout << fixed << setprecision(2);
cout << "Opening Price: $" << openingPrice << endl;
if (!bidQueue.empty())
{
Bid sTemp = bidQueue.top();
cout << "Current highest bid: $" << sTemp.getBid() << endl;
}
else
cout << "No current bids.\n";
cout << endl;
}
void Item::printCustomersItems()
{
cout << "Item ID: " << itemID << endl;
cout << "Name of item: " << itemName << endl;
cout << "Opening bid price: $" << openingPrice << endl;
cout << endl;
}
void Item::printItemsSold()
{
Bid sTemp = bidQueue.top();
cout << "Item ID: " << itemID << endl;
cout << "Name of item: " << itemName << endl;
cout << fixed << setprecision(2);
cout << "Winning bid: $" << sTemp.getBid() << endl;
cout << "Commission: $" << commission << endl;
cout << fixed << setprecision(2);
cout << "Listing Date: " << listDate.getMonth() << "/" <<
listDate.getDay() << "/" << listDate.getYear() << " ";
cout << "Time: ";
if (listDate.getHour() > 12)
cout << (listDate.getHour() - 12) << ":" <<
listDate.getMinutes() << "PM\n";
else
cout << listDate.getHour() << ":" <<
listDate.getMinutes() << "AM\n";
cout << "Sold by Date: " << endDate.getMonth() << "/" <<
endDate.getDay() << "/" << endDate.getYear() << " ";
cout << "Time: ";
if (endDate.getHour() > 12)
cout << (endDate.getHour() - 12) << ":" <<
endDate.getMinutes() << "PM\n";
else
cout << endDate.getHour() << ":" <<
endDate.getMinutes() << "AM\n";
cout << endl;
}
void Item::printItemsAndBiddingList()
{
cout << "Item ID: " << itemID << endl;
cout << "Name of item: " << itemName << endl;
cout << "Cut-off Date: " << endDate.getMonth() << "/" <<
endDate.getDay() << "/" << endDate.getYear() << " ";
cout << "Cut-off Time: ";
if (endDate.getHour() > 12)
cout << (endDate.getHour() - 12) << ":" <<
endDate.getMinutes() << "PM\n";
else
cout << endDate.getHour() << ":" <<
endDate.getMinutes() << "AM\n";
if (isSold)
cout << "Item has been sold. The past bids are:\n";
if(!isSold)
{
if (BidisEmpty())
cout << "There are no bids on the item.\n\n";
}
else
cout << "Item is still up for bidding. Current bids are:\n";
if (!BidisEmpty())
{
do
{
Bid stemp = bidQueue.top();
cout << "Bid " << bidQueue.size() << " is $" << stemp;
bidQueue.pop();
}while (!BidisEmpty());
cout << endl;
}
// repopulate the priority queue
for (int i=0; i < bidVec.size(); i++)
bidQueue.push(bidVec[i]);
}
void Item::writeItem(fstream &ifile)
{
ifile << cID << endl;
ifile << itemID << endl;
ifile << itemName << endl;
ifile << fixed << setprecision(2) << openingPrice << endl;
listDate.writeDate(ifile);
ifile << isSold << endl;
endDate.writeDate(ifile);
ifile << fixed << setprecision(2) << commission << endl;
}
I also have a Customer class that works fine on its own.
Here is the statement in main that calls the Item write function. It is also working fine.
Code:
//write the items file
itemfile.open("bidItems.txt", ios::out);
if (!itemfile)
{
cout << "The items for bidding file will not open for writing. "
<< "This program will terminate." << endl;
return 1;
}
for (i = itemList.begin(); i!=itemList.end(); ++i)
{
cout << "Writing item: " << i->getItemIDd() << endl;
i->writeItem(itemfile);
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|