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

时间:2012-06-11 11:21:28

标签: c++

#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在成员函数中'void   OopClass :: setOopData()':

     

63 14 C:\ Users \ lypan \ Documents \ final.cpp [错误]预期   'StudentClass'之前的类型说明符

     

63 14 C:\ Users \ lypan \ Documents \ final.cpp [错误]转换无效   从'int *'到'int'[-fpermissive]

     

63 14 C:\ Users \ lypan \ Documents \ final.cpp [Error] expected','或';'   在'StudentClass'之前“

我不知道为什么我做错了,请告诉我我弄错了什么。 THX!

2 个答案:

答案 0 :(得分:1)

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

这可能不是您的代码,但可能是您在{?}}定义的文件中未包含StudentClass.hOopClass.h(或其他)。

编辑:

OopClass::setOopData()

你在第46行声明了一个名为void StudentClass() 的函数 - http://codepad.org/9DP6zpHU - 你可能忘了对其进行限定。

StudentClass

答案 1 :(得分:0)

错误是您定义了一个与类StudentClass具有相同名称的函数:

void StudentClass(){
}

删除该功能,它应该更好。