I have three files, Person.h
, Person.cpp
, and my main.cpp
. In Person.h
I have all my classes and the .cpp part contains the actual implementation. My issue is that I'm getting two error messages when I try to read through an array created by one of my functions and pointed at by private data member *subjects.
The error messages reads:
Severity Code Description Project File Line Error C3867 'Student::myarray1': non-standard syntax; use '&' to create a pointer to member lab_10 c:\users\shireen\documents\visual studio 2015\projects\lab_10\lab_10\main.cpp 67
Severity Code Description Project File Line Error C2109 subscript requires array or pointer type lab_10 c:\users\shireen\documents\visual studio 2015\projects\lab_10\lab_10\main.cpp 67
and my actual code.
main.cpp
#include"Person.h"
#include<string>
#include<iostream>
using namespace std;
int main()
{
Student *pointer1;
Staff *pointer2;
string name, gender;
int age, studentno, subs;
pointer1 = new Student[4];
pointer2 = new Staff[2];
for (int i = 1; i < 5; i++)
{
cout << "please enter the name of student " << i << endl;
cin >> name;
cout << "please enter the age of student " << i << endl;
cin >> age;
cout << "please enter the gender of student " << i << endl;
cin >> gender;
cout << "please enter student " << i << "'s student number" << endl;
cin >> studentno;
cout << "please enter the number of subjects taken by student " << i << endl;
cin >> subs;
pointer1[i].set_name(name);
pointer1[i].set_age(age);
pointer1[i].set_gender(gender);
pointer1[i].set_StudentNumber(studentno);
pointer1[i].set_NumberOfSubjects(subs);
pointer1[i].myarray1(subs);
}
for (int i = 1; i < 3; i++)
{
cout << "please enter the name of Staff member " << i << endl;
cin >> name;
cout << "please enter the age of staff member " << i << endl;
cin >> age;
cout << "please enter the gender of staff member " << i << endl;
cin >> gender;
cout << "please enter the number of subjects taught by staff member " << i << endl;
cin >> subs;
pointer2[i].set_name(name);
pointer2[i].set_age(age);
pointer2[i].set_gender(gender);
pointer2[i].set_NumberOfSubjects(subs);
pointer2[i].myarray2(subs);
}
for (int i = 1; i < 5; i++)
{
pointer1[i].get_name();
pointer1[i].get_StudentNumber();
cout << "Student name: " << name << endl;
cout << "Student age: " << age << endl;
for (int j = 0; j < 4; j++)
{
string *word;
pointer1[i].myarray1[j] = word;
cout << word << endl;
}
}
system("PAUSE");
return 0;
Person.h
#ifndef _PERSON_H_
#define _PERSON_H_
#include <string>
#include <iostream>
using namespace std;
class Person
{
private:
string name;
int age;
string gender;
public:
Person();
~Person();
void set_name(string n);
void set_age(int a);
void set_gender(string g);
string get_name();
int get_age();
string get_gender();
};
class Staff : public Person
{
private:
int NumberOfSubjects;
string *Subjects;
public:
Staff();
~Staff();
void set_NumberOfSubjects(int ns);
int get_NumberOfSubjects();
string myarray2(int ns);
};
class Student : public Person
{
private:
int StudentNumber;
int NumberOfSubjects;
string *Subjects;
public:
Student();
~Student();
bool set_StudentNumber(int sn);
int get_StudentNumber();
void set_NumberOfSubjects(int ns);
int get_NumberOfSubjects();
string myarray1(int ns);
};
#endif _PERSON_H
Person.cpp
#include "Person.h"
Person::Person() {}
void Person::set_name(string n)
{
name = n;
}
void Person::set_age(int a)
{
age = a;
}
void Person::set_gender(string g)
{
gender = g;
}
string Person::get_name() { return name; }
int Person::get_age() { return age; }
string Person::get_gender() { return gender; }
Person::~Person() {}
//staff
Staff::Staff() {}
void Staff::set_NumberOfSubjects(int ns)
{
NumberOfSubjects = ns;
}
int Staff::get_NumberOfSubjects() { return NumberOfSubjects; }
string Staff::myarray2(int NumberOfSubjects)
{
Subjects = new string[NumberOfSubjects];
for (int i = 0; i < NumberOfSubjects; i++)
{
cout << "please enter the number of subjects taught" << endl;
cin >> Subjects[i];
return Subjects[i];
}
}
Staff::~Staff()
{
delete[] Subjects;
}
///student
Student::Student() {}
bool Student::set_StudentNumber(int sn)
{
StudentNumber = sn;
if (sn<0 || 100>sn)
{
cout << "This is not a valid student number" << endl;
system("PAUSE");
return false;
}
}
int Student::get_StudentNumber() { return StudentNumber; }
void Student::set_NumberOfSubjects(int ns)
{
cout << "Please enter the number of subjects: " << endl;
cin >> ns;
NumberOfSubjects = ns;
}
int Student::get_NumberOfSubjects() { return NumberOfSubjects; }
string Student::myarray1(int NumberOfSubjects)
{
string *sub_Ptr;
Subjects = new string[NumberOfSubjects];
for (int i = 0; i < NumberOfSubjects; i++)
{
cout << "Please enter the name of the subject: " << endl;
cin >> Subjects[i];
sub_Ptr = &Subjects[i];
return *sub_Ptr;
}
}
Student::~Student()
{
delete[] Subjects;
}