为什么我不能在函数中使用类Object

时间:2019-02-28 03:08:01

标签: c++

我的类对象在程序中的工作方式存在一些问题。我有4个班级:StudentPrintWriteLoad

我的代码如下:

主要:

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没有一起编译,我可以编译程序而没有任何错误。我只是不明白这一点。

我的代码远不止于此,而且碰巧我可以包含一个类的头文件,然后很好地使用该类对象。但是,在某些类中,即使我包含另一个类的头文件,如上所示,我仍然会收到错误消息,指出该类的对象名称未在我要使用的类的头文件中声明。

你能告诉我为什么吗?

0 个答案:

没有答案