09.03.2014, 23:24. Просмотров 222. Ответов 0
Имеются наследники класса person : student и prepod.
Нужно создать массив, в котором будут храниться объекты этих классов и вывести на экран, например, только студентов.
Не знаю как именно создать массив, чтобы при помощи
typeid обращаться к нужным элементам
Без массива всё работает...Вот код.
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| #include <iostream>
using namespace std;
class person
{
char *name;
public:
person() { name=new char [255];}
~person() { delete []name;}
void setName();
char *showName() {return name;}
friend istream& operator >>(istream &in, const person &pers);
friend ostream &operator<<(ostream &out, const person &pers);
};
class student:virtual public person
{
int kurs;
int group;
public:
student():kurs(0), group(0) {}
void setkurs(int kur) {kurs=kur;}
void setgroup(int gr) {group=gr;}
void setStud() {cout<<"Введите курс и группу"<<endl; cin>>kurs>>group;}
friend ostream & operator<<(ostream &out, student &stud);
friend istream& operator >>(istream &in,student &stud);
};
class prepod:virtual public person
{
char * kaf;
public:
prepod(){ kaf=new char [255];}
~prepod() { delete []kaf;}
friend ostream& operator<<(ostream& out,prepod& prep);
friend istream& operator >>(istream &in,prepod& prep);
};
//person методы
void person::setName()
{
cout<<"Введите имя"<<endl;
cin.getline(name,255);
}
istream& operator >>(istream &in, const person &pers)
{
cout<<"Введите имя, фамилию"<<endl;
in.getline(pers.name,255);
return in;
}
ostream &operator<<(ostream &out, const person &pers)
{
out<<"Имя: "<<pers.name<<endl;
return out;
}
//student методы
ostream & operator<<(ostream &out, student &stud)
{
out<<"Имя: "<<stud.showName()<<endl<<"Курс: "<<stud.kurs<<endl<<"Группа: "<<stud.group<<endl;
return out;
}
istream& operator >>(istream &in,student &stud)
{
stud.setName();
cout<<"Введите курс"<<endl;
int kurs,group;
in>>kurs;
cout<<"Введите группу"<<endl;
in>>group;
stud.setgroup(group);
stud.setkurs(kurs);
return in;
}
//prepod методы
ostream& operator<<(ostream& out,prepod& prep)
{
out<<"Имя: "<<prep.showName()<<endl<<"Кафедра:"<<prep.kaf<<endl;
return out;
}
istream& operator >>(istream &in,prepod& prep)
{
prep.setName();
cout<<"Введите кафедру"<<endl;
in>>prep.kaf;
return in;
}
//
class common:public student, public prepod
{
public:
//быть может ещё 1 класс нужен?
}; |
|