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

继承的问题,求助!!

shenyulv 发布于 2009-11-19 23:59, 640 次点击
#include"iostream"
#include"string"
using namespace std;
class Person
{ public:
   Person(string n,string s,int a)
   {name=n;sex=s;age=a;}
   void display()
   { cout<<"姓名:"<<name<<endl;
     cout<<"性别:"<<sex<<endl;
     cout<<"年龄:"<<age<<endl;
   }
protected:
   string name;
   string sex;
   int age;
};
class Teacher:virtual public Person
{ public:
 Teacher(string n,string s,int a,string t,string l)
     :Person(n,s,a)
 { title=t;
   lesson=l;
 }
 void display()
 { Person::display();
   cout<<"职称:"<<title<<endl;
   cout<<"担任课程:"<<lesson<<endl;
 }
protected:
    string title;
    string lesson;
};
class Student:virtual public Person
{ public:
  Student(string n,string s,int a,string no,string d)
      :Person(n,s,a)
  { num=no;
    depa=d;
  }
  void display()
  { Person::display();
    cout<<"学号:"<<num<<endl;
    cout<<"系别"<<depa<<endl;
  }
protected:
    string num;
    string depa;
};
class Graduate:public Student
{
public:
 Graduate(string n,string s,int a,string no,string d,string tn)
     :Person(n,s,a),Student(n,s,a,no,d)
 { tname=tn;
 }
 void display()
 { Student::display();
   cout<<"导师:"<<tname<<endl;
 }
private:
    string tname;
};
int main()
{ Teacher teac("黄奕","女","教授",48,"面向对象程序设计");//报错了。是怎么回事
  Student stud("罗志祥","男",18,"2007082011","计算机");
  Graduate grad("贺军翔","男",24,"2004082011","计算机系","胡歌");
  cout<<"教师的有关数据如下:"<<endl;
  teac.display();
  cout<<"\n学生的有关数据如下:"<<endl;
  stud.display ();
  cout<<"\n研究生的有关数据如下:"<<endl;
  grad.display();
  return 0;
}




E:\VC++\8.cpp(65) : error C2664: '__thiscall Teacher::Teacher(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,class s
td::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)' : cannot convert parameter 3 from 'char [5]' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.
6 回复
#2
flyingcloude2009-11-20 00:17
程序代码:
class Teacher:virtual public Person
{ public:
Teacher(string n,string s,int a,string t,string l) //你下面调用的跟这定义的不一样。
     :Person(n,s,a)
{ title=t;
   lesson=l;
}
void display()
{ Person::display();
   cout<<"职称:"<<title<<endl;
   cout<<"担任课程:"<<lesson<<endl;
}
protected:
    string title;
    string lesson;
};

#3
shiyuehai2009-11-22 10:52
我是初学的,我觉得你上面Teacher类的那个构造函数里面第3个参数定义的类型是int,下面给实参给的确是字符,可能这里错了吧
#4
stify2009-11-22 19:57
我是初学者,我觉得调用错了,应该是年龄在教授的前边
#5
kinshasa2009-11-25 02:28
我在等
#6
flyingcloude2009-11-25 13:00
回复 5楼 kinshasa
在等什么
#7
shenyulv2009-11-25 15:17
谢谢咯,好低级的错误啊
1