在成员函数中声明指向不同类的指针


#include<iostream>
using namespace std;
class StudentClass{
friend class Oopclass;
public:
    StudentClass();
    void setStudentData();
    void printStudentScore();
    StudentClass* next;
    ~StudentClass();
private:
    string std_ID;
    int sID, sMid, sFin, sOP, hw[3];   
    double sTotal; 
};
class OopClass{
friend class StudentClass;
public:
    OopClass();
    void setOopData();
    void printOopScore();
    void queryOopScore();
    void findOopAverageScore();
    void addStudentData();
    void deleteStudentData();
    void updateStudentData();
    ~OopClass();
private:
    string professor, subject;
    int cSn;
    double cSAvg;
    StudentClass* cSAddr;
};
int main(int argc, char **argv){
OopClass Info[3];
Info[0].setOopData();
return 0;
}
StudentClass::StudentClass(){
}
void StudentClass(){
}
void StudentClass::setStudentData() {
}
StudentClass::~StudentClass(){
}
OopClass::OopClass(){
}
void OopClass::setOopData() {
cout << "Professor?" << endl;
cin >> professor;
cout << "Subject?" << endl;
cin >> subject; 
cout << "How many students do you want to input ?" << endl;
int number = 0;
cin >> number;
cSAddr = new StudentClass;
//for(int i = 0; i < number; i ++) setStudentData();
}
OopClass::~OopClass(){
}

当我厌倦了写"cSAddr = new StudentClass;"时,它会出现

关于的错误

" C:\Users\lypan\Documents\final.cpp In member function 'void OopClass::setOopData()':

63 14 C:\用户\lypan\文档\最终.cpp [错误] 预期 "学生类"前的类型说明符

63 14 C:\用户\lypan\文档\最终.cpp [错误] 无效转换 从 'int*' 到 'int' [-fallowive]

63 14 C:\Users\lypan\Documents\final.cpp [错误] 预期 '","' 或 ';' 在'学生班'之前"

我不知道我为什么做错了,请告诉我我犯了什么错误。 谢谢!

这里唯一的错误是你没有实现类的构造函数。但这应该会产生链接器错误。

这可能不是您的代码,但可能是您没有在定义OopClass::setOopData()的文件中包含StudentClass.hOopClass.h(或其他任何内容)。

编辑:

void StudentClass()

您在第 46 行声明了一个名为 StudentClass 的函数 - http://codepad.org/9DP6zpHU - 您可能忘记限定它。

StudentClass::StudentClass(){
}
//THIS!
void StudentClass(){
}
void StudentClass::setStudentData() {
}

错误是你定义了一个与类StudentClass同名的函数:

void StudentClass(){
}

删除该函数,它应该可以更好地工作。

最新更新