rain_xiaoying 2015-05-07 13:02 采纳率: 0%
浏览 1526

类构造函数的问题(继承)


#include <iostream>

using namespace std;

class People
{

protected:
    char name[20],xb[10],id[21];
    int num,all,week;

public:People()
      {
      }

public:People(char na[20],int nu,char x[10],char idc[21],int al,int wk)
      {
          strcpy_s(name,na);
          num=nu;
          strcpy_s(xb,x);
          strcpy_s(id,idc);
          all=al;
          week=wk;
      }
      virtual void show()
      {
          cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<endl;
      }
};
//学生
class Student: virtual public People
{
public:
    Student(char na[20],int nu,char x[10],char idc[21],int al,int wk){};
};

//教师
class Teacher:virtual public People
{

protected:
    int teach;

public:
    Teacher(char na[20],int nu,char x[10],char idc[21],int al,int wk,int tean);
    void show()
    {
        cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<'\t'<<teach<<endl;
    }
};

Teacher::Teacher(char na[20],int nu,char x[10],char idc[21],int al,int wk,int tean):People(na,nu,x,idc,al,wk)
{
    teach=tean;
};

class Graduate:virtual public Student
{
protected:
    char project[30];

public:
    Graduate(char na[20],int nu,char x[10],char idc[21],int al,int wk,char pro[30]):Student(na,nu,x,idc,al,wk)
    {
        strcpy_s(project,pro);
    }
    void show()
    {
        cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<'\t'<<project<<endl;
    }
};
class Ta:public Graduate ,public Teacher
{
protected:
    char project[30];
    int teachT;

public:
    Ta(char na[20],int nu,char x[10],char idc[21],int al,int wk,char proT[30],int teaT):Student(na,nu,x,idc,al,wk)
    {
        strcpy_s(project,proT);
        teachT=teaT;
    }
    void show()
    {
        cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<'\t'<<project<<'\t'<<teach<<endl;
    }
};

int main() {
    People pe("kkjl",5,"xkjkj","idcxxxx",5,6);
    pe.show();


    Teacher tr("kkjl",5,"xkjkj","idcxxxx",5,6,7);

    tr.show();


    Graduate gd("kkjl",5,"xkjkj","idcxxxx",5,6,"proxxxxx");
    gd.show();

    return 0;
}

我想问TA类的构造函数哪里错了呢?
它说“Graduate”: 没有合适的默认构造函数可用..“Teacher”: 没有合适的默认构造函数可用
还有..gd.show(); 输出的数据为什么会溢出呢?..
T^T求高手帮忙,,我研究半天了,,还是不懂..
谢谢了T^T

  • 写回答

1条回答 默认 最新

  • frank_20080215 2015-05-08 02:16
    关注

    在每个子类的构造函数增加一句Base()。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题