i have a localstudent and internationalstudent class inherit from student class. read and print are virtual functions. After i have set all the member variables when i wan to print out all the student information, my program crashes. Why and how to fix it?
Code:
int main()
{
clsUniversityProgram objProgram[3];
for (int x = 0; x < 3; x++)
{
objProgram[x].programInfo(); // prompt user to enter program details and set them accordingly
}
vector <clsStudent*> student;
addStudents(student, objProgram);
student.front()->print();
return 0;
}
addStudents function
Code:
void addStudents(vector <clsStudent*>& student, clsUniversityProgram objProgram[])
{
clsLocalStudent *studentadd;
studentadd = new clsLocalStudent();
studentadd->read(objProgram);
student->push_back(studentadd);
}
read virtual function
Code:
void clsLocalStudent::read(clsUniversityProgram *objProgram)
{
int program, years, times;
clsUniversityProgram selectProgram;
clsDate mDOB;
double mGPA;
string studName, accNo, gender;
float rate, principle;
setNationality("Local");
// prompt for student name
cout << endl << "Student name\t\t: ";
cin >> studName;
setName(studName);
// prompt for student DOB
cout << endl << "Date of Birth\t\t: ";
cin >> mDOB;
setDateOfBirth(mDOB);
cout << " +===========================+" << endl;
cout << " press 1 - for " << objProgram[0].getProgramName()
<< "\n press 2 - for " << objProgram[1].getProgramName()
<< "\n press 3 - for " << objProgram[2].getProgramName() << endl;
cout << " +===========================+";
cout << endl << "Program name\t\t: ";
cin >> program;
while (program != 1 && program != 2 && program != 3)
{
cout << "Invalid program! Please select key in 1, 2 or 3 only.";
cin >> program;
}
if (program == 1)
{
setProgram(&objProgram[0]);
}
else if (program == 2)
{
setProgram(&objProgram[1]);
}
else
{
setProgram(&objProgram[2]);
}
clsAccount objAccount(accNo,studName,accID,mDOB, accStartDate, principle, rate, years, times);
setAccounts(objAccount);
// and setting other information
}
print virtual function
Code:
void clsLocalStudent::print()
{
cout << "\nStudent Name\t\t\t: " << getName()
<< "\nDate of Birth\t\t\t: " << getDateOfBirth()
<< "\nProgram Name\t\t\t: << getProgram()->getProgramName()
<< "\nAccount Number\t\t: << getAccounts()->getAccountNumber();
}