我的类对象在程序中的工作方式存在一些问题。我有4个班级:Student
,Print
,Write
和Load
。
我的代码如下:
主要:
char filename[20];
int choice;
PrintData newPrint;
StoreData writeData;
LoadData readData;
Student a;
a.studentID = 2;
a.studentName = "Michael;
cout << "Please enter output file name: ";
cin >> fileName;
cout << "Enter choice: ";
cin >> choice;
if (choice == 1)
writeData.StoreStudent(newStudent, numStudent, fileName);
else
readData.LoadStudent(newStudent, numStudent, fileName);
我的学生班级:
class Student{
public:
int studentID;
std::string studentName;
};
我的印刷课:
#include "Student.h"
void printStudent(Student a);
我的商店数据类:
#include "Student.h"
void StoreData::StoreStudent(Student a, int numStudent, char name[20])
存储数据。h:
class StoreData{
public:
char outputName;
void StoreStudent(Student *newStudent, int numStudent, char name[20]);
};
和我的加载数据类:
#include "Student.h"
void LoadData::LoadStudent(Student *newStudent, int &numStudent, char name[20])
我的LoadData.h:
class LoadData{
public:
void LoadStudent(Student *newStudent, int &numStudent, char name[20]);
};
如果我不编译LoadData.cpp
,则可以将数据写入文件,并使用Print
类中的对象打印数据。
但是,如果我编译LoadData.cpp
,则会收到此错误:
error: ‘Student’ has not been declared void StoreStudent(Student *newStudent, int numStudent, char name[20]); PrintData.h:4:21: error: ‘Student’ has not been declared void printStudent(Student *newStudent, int numStudent); prototype for ‘void LoadData::LoadStudent(Student*, int&, char*)’ does not match any in class ‘LoadData’ void LoadData::LoadStudent(Student *newStudent, int &numStudent, char name[20])
如果LoadData.cpp
没有一起编译,我可以编译程序而没有任何错误。我只是不明白这一点。
我的代码远不止于此,而且碰巧我可以包含一个类的头文件,然后很好地使用该类对象。但是,在某些类中,即使我包含另一个类的头文件,如上所示,我仍然会收到错误消息,指出该类的对象名称未在我要使用的类的头文件中声明。>
你能告诉我为什么吗?