我已经创建了几个具有关联标题和声明/定义函数的源文件。我不断收到一个错误,指出一个班级没有成员。我正在调用一个明确地将一个成员关联到我的私人成员的集合函数。还有什么我应该包括在内?类''没有名为''的成员'
#ifndef STUDENTCOLLECTION_H
#define STUDENTCOLLECTION_H
#include<string>
#include<vector>
#include<iostream>
#include<fstream>
using namespace std;
#include "StudentProfile.h"
#include "Person.h"
#include "Student.h"
#include "Course.h"
class StudentCollection
{
private:
vector<StudentProfile> StCollection;
public:
void GetInfo();
void PrintCollection();
StudentCollection(){};
StudentCollection(vector<StudentProfile> StCollection){};
};
#endif
它的.cpp文件:
#ifndef STUDENTCOLLECTION_CPP
#define STUDENTCOLLECTION_CPP
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
#include "StudentCollection.h"
#include "StudentProfile.h"
#include "Student.h"
#include "Person.h"
#include "Course.h"
void StudentCollection::GetInfo()
{
long SN;
string first;
string last;
string a;
char sex;
long ID;
Course Class1;
Course Class2;
Course Class3;
long num;
string name;
Person PInfo;
Student SInfo;
ifstream fin;
fin.open("info.txt");
fin >> first >> last >> SN >> a >> sex >> ID >> SInfo.Class1.num >> SInfo.Class1.name >> SInfo.Class2.num >> SInfo.Class2.name >> SInfo.Class3.num >> SInfo.Class3.\
name;
while (!fin.eof())
{
StudentProfile New_Stu;
New_Stu.SetAStudentProfile(PInfo, SInfo);
New_Stu.PInfo.SetSetAPerson(SN, first, last, a, sex);
New_Stu.SInfo.SetAStudent(ID, Class1, Class2, Class3);
New_Stu.SInfo.SetACourse(num, name);
StCollection.push_back(New_Stu);
fin >> first >> last >> SN >> a >> sex >> ID >> SInfo.Class1.num >> SInfo.Class1.name >> SInfo.Class2.num >> SInfo.Class2.name >> SInfo.Class3.num >> SInfo.Class3.\
name;
}
fin.close();
}
void StudentCollection::PrintCollection()
{
}
#endif
StudentProfile.h文件:
#ifndef STUDENTPROFILE_H
#define STUDENTPROFILE_H
using namespace std;
#include "Person.h"
#include "Student.h"
class StudentProfile
{
private:
Person PersonalInfo;
Student StdInfo;
public:
void SetAStudentProfile(Person PInfo, Student SInfo);
void PrintAStudentProfile();
StudentProfile(){};
StudentProfile(Person PInfo, Student SInfo){};
};
#endif
的StudentProfile.cpp:
#ifndef STUDENTPROFILE_CPP
#define STUDENTPROFILE_CPP
#include<iostream>
using namespace std;
#include "StudentProfile.h"
void StudentProfile::SetAStudentProfile(Person PInfo, Student SInfo)
{
PersonalInfo = PInfo;
StdInfo = SInfo;
}
void StudentProfile::PrintAStudentProfile()
{
}
#endif
这是我的编辑错误(我在另一个地方有另一个问题,但我是肯定的原因是一样的):
StudentCollection.cpp:43: error: ‘class StudentProfile’ has no member named ‘PInfo’
StudentCollection.cpp:44: error: ‘class StudentProfile’ has no member named ‘SInfo’
StudentCollection.cpp:45: error: ‘class StudentProfile’ has no member named ‘SInfo’
我在课堂上使用StudentProfile功能设定我的私有成员等于别的东西......如果是有道理的。我不应该直接从外面访问班级的私人成员。所以在我的设置函数中,我已经将它们设置为等于我可以在课堂外访问的其他名称。 – Kevin
@CarNorum - 是的,我试图使用这些局部变量。 – Kevin