Yup, they're both friend functions. Here are the headers.
Code:
//*********************************
// Date.h
//********************************
#ifndef DATE_H
#define DATE_H
#include <fstream>
using std::ofstream;
using std::ifstream;
class Date {
public:
explicit Date(const int = 1, const int = 1, const int = 1900);
int getMonth(void) const;
int getDay(void) const;
int getYear(void) const;
void setMonth(const int);
void setDay(const int);
void setYear(const int);
// post-increment day
Date& operator++(void);
// pre-increment day
Date operator++(int);
friend ofstream &operator<<(ofstream&, const Date&);
friend ifstream &operator>>(ifstream&, Date&);
bool isLeapYear(int) const;
bool endOfMonth(int) const;
private:
int month;
int day;
int year;
void incrementDay(void);
};
#endif
//************************************
Student.h
//************************************
#ifndef STUDENT_H
#define STUDENT_H
#include "Date.h"
#include <fstream>
using std::ofstream;
using std::ifstream;
#include <string>
using std::string;
class Student {
public:
explicit Student(const string id = "000000000",
const string fn = "", const string mn = "", const string ln = "",
const string ad1 = "", const string ad2 = "",
const string cty = "", const string st = "", const string zip = "",
const int hrs = 0, const int yr = 1900, const int mth = 1, const int day = 1);
string getStudentID(void) const;
string getFirstName(void) const;
string getMiddleName(void) const;
string getLastName(void) const;
string getAddress1(void) const;
string getAddress2(void) const;
string getCity(void) const;
string getState(void) const;
string getZipCode(void) const;
int getCreditHours(void) const;
Date getEnrollDate(void) const;
void setStudentID(const string);
void setFirstName(const string);
void setMiddleName(const string);
void setLastName(const string);
void setAddress1(const string);
void setAddress2(const string);
void setCity(const string);
void setState(const string);
void setZipCode(const string);
void setEnrollDate(const int m, const int d, const int yr);
void setCreditHours(const int);
void setEnrollDate(const Date);
void incrementCreditHours(const int);
Student &operator=(const Student&);
// based on studentID
bool operator!=(const Student&) const;
bool operator==(const Student&) const;
friend ofstream &operator<<(ofstream&, const Student&);
friend ifstream &operator>>(ifstream&, Student&);
private:
string studentID;
string firstName;
string middleName;
string lastName;
string address1;
string address2;
string city;
string state;
string zipCode;
Date enrollDate;
int creditHours;
};
#endif