注册 登录
编程论坛 C++教室

刚学C++,怎么那么多错误呢

梁朝斌 发布于 2013-04-24 21:19, 595 次点击
#include <iostream.h>
#include <string.h>
class person
{
protected:
    char name[10];
    int sex;
    int    age;
public:
    Person(char *na,int ag,char se)
    {
        strcpy(name, na);
        sex= se;
        age = ag;
    }
    void initname(char *na)
    {
        strcpy(name, na);
    }

    void initsex(int se)
    {
        sex=se;
    }

    void initage(int ag)
    {
        age=ag;
    }

    char * getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }

    int getsex()
    {
        return sex;
    }

    void printf()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"性别:"<<sex<<endl;
        cout<<"年龄:"<<age<<endl;
    }
};
class teacher:public person
{
    char post;
    char salary;
public:
    teacher(char *na,int ge,int se,char *po,char *sa):person(na,ag,se)
    {
        strcpy(post,po);
        salary(salary,sa);
    }
    void printf()
    {
        person::printf();
        cout<<"职位:"<<post<<endl;
        cout<<"工资:"<<salary<<endl;
    }
};
class student:public person
{
    char xuehao[10];
    char Class[10];
public:
    student(char *na,int ag,int se,char *xh,char *cl):person(na,ag,se)
    {
        strcoy(xuehao,xh);
        strcpy(Class,cl);
    }
    printf()
    {
        person::printf();
        cout<<"学号:"<<xuehao<<endl;
        cout<<"班级:"<<Class<<ensl;
    }
};
void main()
{
    teacher te("梁朝斌",22,男,"大学","5000");
    student st("梁朝斌",22,男,"20112111225","11B");
    te.printf();
    cout<<"__________________"<<endl;
    st.printf();
}
        

3 回复
#2
邓士林2013-04-24 22:39
teacher(char *na,int ag,int se,int po,int sa);你看看你的函数参数是多么的不对应; student(char *na,int ag,int se,char *xh,char *cl);参数都不对应;还有你的Person的大小写有的都错了,我给你修改下:
#include <iostream.h>
#include <string.h>
class Person
{
protected:
    char name[20];
    char sex;
    int  age;
public:
    Person(char *na,int ag,char  se)
    {
        strcpy(name, na);
        sex= se;
        age = ag;
    }
    void initname(char *na)
    {
        strcpy(name, na);
    }

    void initsex(char se)
    {
        sex=se;
    }

    void initage(int ag)
    {
        age=ag;
    }

    char * getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }

    char getsex()
    {
        return sex;
    }

    void printf()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"性别:"<<sex<<endl;
        cout<<"年龄:"<<age<<endl;
    }
};
class teacher:public Person
{
    char *post;
    int  salary;
public:
    teacher(char *na,int ag,char se,char *po,int sa):Person(na,ag,se)
    {
        post=po;
        salary=sa;
    }
    void printf()
    {
        Person::printf();
        cout<<"职位:"<<post<<endl;
        cout<<"工资:"<<salary<<endl;
    }
};
class student:public Person
{
    char xuehao[20];
    char Class[20];
public:
    student(char *na,int ag,char se,char *xh,char *cl):Person(na,ag,se)
    {
        strcpy(xuehao,xh);
        strcpy(Class,cl);
    }
    printf()
    {
        Person::printf();
        cout<<"学号:"<<xuehao<<endl;
        cout<<"班级:"<<Class<<endl;
    }
};
void main()
{
    teacher te("liang",22,'m',"教授",5000);
    student st("liang",22,'m',"20112111225","11B");
    te.printf();
    cout<<"__________________"<<endl;
    st.printf();
}
        
#3
张海锋2013-04-24 23:22
第一你的那个性别是整形,但是构造函数形参是字符型;第二,你的关键字很多写错了,像endl写成了eodl,还有很多粗心的,第三,你的那个person那个类名哪里也有写错的,第四,那个性别应该是字符串类型吧,你看看你一下又定义整形,一下子又字符型,还有strcpy是将数值和地址一起传递吧,怎么可以将一个指针变量复制给一个字符串啊,还有没有发现的,看到就苦逼啊,望楼主给点分,今天我重新回到了论坛
#4
子楠2013-04-25 08:15
看了楼上的,怎么这么多不该犯的错误
1