不知道是哪出了问题?

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
class Person{

    char name[10];

    int age;

    char sex;

 public:
     Person(char *n,int a,char s)
     {
      strcpy(name,n);
      age=a;
      sex=s;
     }
    void Register(char *n,int a,char s) {

    strcpy(name,n);

    age=a; sex=(s=='m'?0:1);

    }

    /*char *getName() { return name; }

    char getSex() { return sex==0?'m':'f'; }

    int getAge() { return age; }*/

    void showMe() {

    cout <<"name: "<<name<<endl<<"sex: "<<sex<<endl<<"age: "<<age<<endl;

    }

};
class Teacher:virtual public Person
{
    char dept[30];
    int salary;
public:
    Teacher(char *n,int a,char s,char*d,int salary):Person(n,a,s)
    {
        strcpy(dept,d);
        this->salary=salary;
    }
    void showMe()
    {
        cout<<"dept: "<<dept<<endl<<"salary: "<<salary<<endl;
    }
};
class Student:virtual public Person
{
   char Class [10];
   char id[10];
public:
       Student(char *n,int a,char s,char*c,char *i):Person(n,a,s)
       {
           strcpy(Class,c);
           strcpy(id,i);
       }
       void showMe()
       {
           cout<<"class: "<<Class<<endl<<"id: "<<id<<endl;
       }
};
class Graduate:public Teacher,public Student
{
public:
    Graduate(const char * n,int a,char s,const char * d,int salary,const char * i,const char * c):Person(n,a,s),Teacher(n,a,s,d,salary),Student(n,a,s,c,i){}
    void showMe()
    {
        Student::showMe();
        Person::showMe();
        Teacher::showMe();
    }
};
int main(){

  Graduate stu1("Lisi",22,'m',"College of Informatics",2000,"2015013","S101");

  stu1.showMe();

  return 0;

}
 

 

你是用的哪个开发工具啊。VS2010和VC6下编译通不过,要求几个构造函数的指针参数必须const char *

改成const char *之后,输出就是你期望的输出了。供参考

Student的构造函数有问题

Student(char *n,int a,char s,char*c,char *i):Person(n,a,s)
       {
           strcpy(Class,c);
           strcpy(id,i);
       }

你继承是Person类,没有 int salary;成员变量。