Header
#ifndef HEADER_H
#define HEADER_H
class Course
{
private:
int sectionNum;
int enrollLimit;
int roomNum;
public:
Course(const int sec, const int lim);
void showClassRoom(void);
void roomAssign(Room &aRoom);
};
class Room
{
friend void Course::roomAssign(Room &aRoom);
private:
int roomNum;
int seatLimit;
int roomIsOccupied;
public:
void setRoomData (const int rm, const int seats, const int occ);
};
#endif
Implementation
#include "HEADER.h"
#include <iostream>
#include <string>
using namespace std;
Course::Course(const int sec, const int lim)
{
sectionNum = sec;
enrollLimit = lim;
roomNum = 0;
}
void Course::showClassRoom()
{
if (roomNum != 0)
{
cout<<"Course Section: "<<sectionNum
<<"\n Room Number: "<<roomNum<<endl;
}
else
cout<<"No room assignment has been made."<<endl;
}
void Course::roomAssign(Room& aRoom)
{
if (roomNum == 0)
if (*aRoom.roomIsOccupied == 0 && *aRoom.seatLimit >= enrollLimit)
*aRoom.setRoomData(1,1,1);
}
void Room::setRoomData (const int rm, const int seats, const int occ)
{
roomNum = rm;
seatLimit = seats;
roomIsOccupied = occ;
}
For the above code, I am getting 3 errors for the classes.
HEADER.h:14: error: 'Room' has not been declared
HEADER.h:19: error: prototype for 'void Course::roomAssign(Room&)' does not match any in class 'Course'
HEADER.h:14: error: candidate is: void Course::roomAssign(int&)
And for the code below
void Course::roomAssign(Room& aRoom)
{
if (roomNum == 0)
if (*aRoom.roomIsOccupied == 0 && *aRoom.seatLimit >= enrollLimit)
*aRoom.setRoomData(1,1,1);
}
The error code says roomIsOccupied, seatLimit are private... I thought the friend function gives permission to use the variables?
I tried to search online on how to generate friend function but i can't find any that do it in the above way. (the friend function created in the class "Room".)
Any thought?

New Topic/Question
Reply



MultiQuote







|