回 帖 发 新 帖 刷新版面

主题:求助  在线等候

以下是我编的一个简单程序.但是出现一个另我郁闷的错误,实在没办法改啊,请高手指教.
本人是编程新手,属于超级菜鸟,所以程序中可能还有好多错误.请大虾们多费点力,帮帮我哈.谢谢!!


class PERSON{
public:
    PERSON();
    void printinfo();
protected:
    char name[10];
    char sex[5];
    int age;
};
class STUDENT:public PERSON{
public:
    STUDENT();
    float aver();
    void printout();
    void printscore();
protected:
    int sno;
    float code;
    float score[5];
    float avg;
};
class TEACHER:public PERSON{
public:
    TEACHER();
    void setcour();
    void printname();
    void printcour();
protected:
    int num;
    char zhicheng[20];
    float cournum;
};
class GRADUTE_STUDENT:public STUDENT,public TEACHER{
public:
    GRADUTE_STUDENT();
    void print();
};
#include<iostream.h>
PERSON::PERSON{
    cout<<"请输入姓名"<<endl;
    cin>>name;
    cout<<"请输入年龄"<<endl;
    cin>>age;
    cout<<"请输入性别"<<endl;
    cin>>sex;
}
STUDENT::STUDENT{
    int i;
    cout<<"请输入学号"<<endl;
    cin>>sno;
    cout<<"请输入专业代码"<<endl;
    cin>>code;
    cout<<"请输入5科成绩"<<endl;
    for(i=0;i<5;i++)
    cin>>score[i];
}
TEACHER::TEACHER{
    cout<<"请输入职工号:"<<endl;
    cin>>num;
    cout<<"请输入职称:"<<endl;
    cin>>zhicheng;

}
GRADUTE_STUDENT::GRADUTE_STUDENT{
    cout<<"以下是他的基本信息"<<endl;
}
float STUDENT::aver{

    int i;
    float zongfen=0;
    for(i=0;i<5;i++)
        zongfen+=score[i];
    return zongfen/5;
}
void STUDENT::printout
{
    int i;
    cout<<"姓名 :"<<name<<endl;
    cout<<"年龄 :"<<age<<endl;
    cout<<"性别 :"<<sex<<endl;
    cout<<"学号 :"<<sno<<endl;
    cout<<"专业代码:"<<code<<endl;
}
void STUDENT::printscore{
    cout<<"学号 :"<<sno<<endl;
    cout<<"姓名 :"<<name<<endl;
    for(i=0;i<5;i++)
    cout<<"第"<<i+1<<"科成绩 :"<<score[i]<<endl;
    cout<<"平均成绩 :"<<aver()<<endl;
}
void TEACHER::printname{
    cout<<"姓名:"<<name<<"  性别:"<<sex<<"  年龄:"<<age<<"  职工号:"<<num<<"  职称:"<<zhicheng<<endl;
}
void TEACHER::setcour{
    cout<<"请输入讲授课程代号:"<<endl;
    cin>>cournum;
}
void TEACHER::printcour{
    cout<<"姓名:"<<name<<"  课程代号:"<<cournum<<endl;
}
void GRADUTE_STUDENT::print{
    cout<<"姓名:"<<name<<"  性别:"<<sex<<"  年龄:"<<age<<"  专业:"<<num<<"  职称:"<<zhicheng<<endl;
}
void main()
{
    GRADUTE_STUDENT zhang;
    zhang.print();


以下是编译时出的错:
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
D:\上机\wjl\main.cpp(39) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 1786) 
         Please choose the Technical Support command on the Visual C++ 
         Help menu, or open the Technical Support help file for more information
Error executing cl.exe.

main.exe - 1 error(s), 0 warning(s)

回复列表 (共2个回复)

沙发

怎么就是没人帮我啊

板凳

每个函数的括号都忘记了,例如PERSON::PERSON()。
最关键的问题在于从一个类A的两个子类B,C多重继承时,B和C要采用虚继承,virtual关键字,不然最底层的类会同时包含两个A的实例,编译不能通过。
所以Teacher和Student类需要从Person虚拟继承。

我来回复

您尚未登录,请登录后再回复。点此登录或注册