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);
	}