i made the suggested alterations and overloaded my operators, but now the compiler is giving me errors having to deal with my functions' handling of private member variables.
Here is the code and erros
Code:
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
class Grades
{
public:
Grades();
Grades(int quiz1, int quiz2, int midterm, int final);
friend ostream& operator <<(ostream& Outs, const Grades& Rhs);
friend istream& operator >>(istream& Ins, Grades& Rhs);
friend Grades operator +(const Grades& Lhs, const Grades& Rhs);
friend Grades operator *(const Grades& Lhs, const Grades& Rhs);
friend Grades operator /(const Grades& Lhs, const Grades& Rhs);
friend Grades operator -(const Grades& Lhs, const Grades& Rhs);
friend bool operator ==(const Grades& Lhs, const Grades& Rhs);
int GetQuiz1();
int GetQuiz2();
int GetMidterm();
int GetFinal();
void SetQuiz1(int NewQuiz1);
void SetQuiz2(int NewQuiz2);
void SetMidterm(int NewMidterm);
void SetFinal(int NewFinal);
private:
int mQuiz1;
int mQuiz2;
int mMidterm;
int mFinal;
};
int main()
{
Grades Student;
Grades Sum; //will be used to get average of all quizes
double Avg;
double Quiz1TotalAverage;
double Quiz2TotalAverage;
double FinalTotalAverage;
double MidtermTotalAverage;
int counter = 0;
ifstream Fin;
ofstream Fout;
Fin.open("input.txt");
if(Fin.fail())
{
cout << "Input file opening failed.\n";
exit(1);
}
Fout.open("output.txt");
if(Fout.fail())
{
cout << "Output file opening failed.\n";
exit(1);
}
Fout << " Quiz1 " << " Quiz2 " << " Midterm " << " Final " << " Average " << endl;
/*******************************************************************************
This loop executes until the entire file has been read and formula has been applied.
*******************************************************************************/
while(!(Fin.eof()))
{
Fin >> Student;
Fout << Student;
Avg = 20.0 * (Student.GetQuiz1() + Student.GetQuiz2())/20 + (20.0 * Student.GetMidterm())/100 + (60.0 * Student.GetFinal())/100;
Sum = Sum + Student; // Keeps a running total of all the grades
Fout << setw(10) << Avg << endl;
counter++;
}
//the total average for each quiz, midterm and final is set equal to a variable
//whose value will be output to the output file
Quiz1TotalAverage = Sum/counter;
Quiz2TotalAverage = Sumcounter;
FinalTotalAverage = Sum/counter;
MidtermTotalAverage = Sum/counter;
Fout << "___" << setw(10) << "___" << setw(10) << "___" << setw(10) << "___" << endl;
Fout << Quiz1TotalAverage << setw(10) << Quiz2TotalAverage << setw(10) << FinalTotalAverage << setw(10) <<MidtermTotalAverage;
Fin.close();
Fout.close();
return 0;
}
Grades::Grades() : mQuiz1(0), mQuiz2(0), mMidterm(0), mFinal(0)
{
}
Grades::Grades(int mQuiz1, int mQuiz2, int mMidterm, int mFinal)
{
}
istream& operator >>(istream& Ins, Grades& Rhs)
{
return Ins >> Rhs.mQuiz1 >> Rhs.mQuiz2 >> Rhs.mMidterm >> Rhs.mFinal;
}
ostream& operator <<(ostream& Outs, const Grades& Rhs)
{
return Outs << Rhs.mQuiz1 << setw(10) << Rhs.mQuiz2
<< setw(10) << Rhs.mMidterm << setw(10) << Rhs.mFinal;
}
Grades operator +(const Grades& Lhs, const Grades Rhs)
{
Grades temp;
temp.mQuiz1 = Lhs.mQuiz1 + Rhs.mQuiz1;
temp.mQuiz2 = Lhs.mQuiz2 + Rhs.mQuiz2;
temp.mMidterm = Lhs.mMidterm + Rhs.mMidterm;
temp.mFinal = Lhs.mFinal + Rhs.mFinal;
return temp;
}
Grades operator -(const Grades& Lhs, const Grades Rhs)
{
Grades temp;
temp.mQuiz1 = Lhs.mQuiz1 - Rhs.mQuiz1;
temp.mQuiz2 = Lhs.mQuiz2 - Rhs.mQuiz2;
temp.mMidterm = Lhs.mMidterm - Rhs.mMidterm;
temp.mFinal = Lhs.mFinal - Rhs.mFinal;
return temp;
}
Grades operator /(const Grades& Lhs, const Grades& Rhs)
{
Grades temp;
temp.mQuiz1 = Lhs.mQuiz1 / Rhs.mQuiz1;
temp.mQuiz2 = Lhs.mQuiz2 / Rhs.mQuiz2;
temp.mMidterm = Lhs.mMidterm / Rhs.mMidterm;
temp.mFinal = Lhs.mFinal / Rhs.mFinal;
return temp;
}
/*bool operator ==(const Grades& Lhs, const Grades& Rhs)
{
Grades temp;
temp.mQuiz1 = Lhs.mQuiz1 == Rhs.mQuiz1;
temp.mQuiz2 = Lhs.mQuiz2 == Rhs.mQuiz2;
temp.mMidterm = Lhs.mMidterm == Rhs.mMidterm;
temp.mFinal = Lhs.mFinal == Rhs.mFinal;
return temp;
}*/
Grades operator *(const Grades& Lhs, const Grades& Rhs)
{
Grades temp;
temp.mQuiz1 = Lhs.mQuiz1 * Rhs.mQuiz1;
temp.mQuiz2 = Lhs.mQuiz2 * Rhs.mQuiz2;
temp.mMidterm = Lhs.mMidterm * Rhs.mMidterm;
temp.mFinal = Lhs.mFinal * Rhs.mFinal;
return temp;
}
int Grades::GetQuiz1()
{
return mQuiz1;
}
int Grades::GetQuiz2()
{
return mQuiz2;
}
int Grades::GetMidterm()
{
return mMidterm;
}
int Grades::GetFinal()
{
return mFinal;
}
void Grades::SetQuiz1(int NewQuiz1)
{
mQuiz1 = NewQuiz1;
}
void Grades::SetQuiz2(int NewQuiz2)
{
mQuiz2 = NewQuiz2;
}
void Grades::SetMidterm(int NewMidterm)
{
mMidterm = NewMidterm;
}
void Grades::SetFinal(int NewFinal)
{
mFinal = NewFinal;
}
Code:
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(139) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(139) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(139) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(140) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(140) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(140) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(141) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(141) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(141) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(142) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(142) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(142) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(151) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(151) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(151) : error C2248: 'Grades::mQuiz1' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(35) : see declaration of 'Grades::mQuiz1'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(152) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(152) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(152) : error C2248: 'Grades::mQuiz2' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(36) : see declaration of 'Grades::mQuiz2'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(153) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(153) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(153) : error C2248: 'Grades::mMidterm' : cannot access private member declared in class 'Grades'
c:\documents and settings8\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(37) : see declaration of 'Grades::mMidterm'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(154) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(154) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(154) : error C2248: 'Grades::mFinal' : cannot access private member declared in class 'Grades'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(38) : see declaration of 'Grades::mFinal'
c:\documents and settings\my documents\visual studio 2005\projects\anotest\anotest\tazor.cpp(12) : see declaration of 'Grades'