Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
1

Композиция и Наследование классов

04.09.2019, 21:33. Показов 1024. Ответов 1
Метки нет (Все метки)

Что это за ошибки и как их решить?
https://www.cyberforum.ru/atta... 1567621843

Employee.h
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
#pragma once
#include <cstdlib>
#include <vector>
#include <cstring>
#include <string>
#include "Person.h"
class Employee : public Person
{
 
char Organization[32];
char Specialty[32];
char Position[32];
int Salary;
int Experience;
public:
int GetExperience()
{
return Experience;
}
Employee(Employee & E)
{
strcpy(Organization,E.Organization);
strcpy(Position,E.Position);
strcpy(Specialty,E.Specialty);
Salary = E.Salary;
Experience = E.Experience;
}
Employee(char SN[],char N[],char F[],bool G,int DD,int MM,int YYYY,char O[],
char Sp[],char P[],int S,int E)
:Salary(S),Experience(E),Person(SN,N,F,G,DD,MM,YYYY)
{
strcpy(Organization,O);
strcpy(Position,P);
strcpy(Specialty,Sp);
}
virtual char *GetSName()
{
return Person::GetSName();
}
 
virtual char *GetName()
{
return Person::GetName();
}
 
virtual char *GetFName()
{
return Person::GetFName();
}
 
virtual boolGetGender()
{
return Person::GetGender();
}
virtual struct Date GetDate()
{
return Person::GetDate();
}
Employee(){}
~Employee(){}
 
friend istream& operator >> (istream & is,Employee& P);
friend ostream& operator <<(ostream & os, Employee& P);
};
ostream& operator <<(ostream & os, Employee & P)
{
cout.widen(10);
return os<<P.GetSName()<<'\t'<<P.GetName()<<'\t'<<P.GetFName()
<<'\t'<<(P.GetGender()?'Ж':'Ч')<<'\t'
<<P.GetDate().DD<<'.'<<P.GetDate().MM<<'.'<<P.GetDate().YYYY
<<"\t\t"<<P.Organization<<"\t\t"<<P.Specialty<<"\t\t"<<P.Position
<<"\t\t"<<P.Experience<<"\t\t"<<P.Salary;
}
istream& operator >> (istream& is, Employee& P )
{
return is>>P.SetName("")>>P.SetSName("")>>P.SetFName("")
>>P.SetGender("")>>P.BDate.DD>>P.BDate.MM>>P.BDate.YYYY
>>P.Organization>>P.Specialty>>P.Position>>P.Experience>>P.Salary;
};
Person.h
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#pragma once
#include <cstdlib>
#include <vector>
 
#include<cstring>
#include<iostream>
using namespace std;
struct Date
{
int DD;
int MM;
int YYYY;
Date(){}
Date(int D,int M,int Y)
{
DD = D;
MM = M;
YYYY = Y;
}
};
class Person
{
char SName[32];
char Name[32];
char FName[32];
bool Gender;
 
 
public:
struct Date BDate;
char * SetSName(char * SN)
{
strcpy(SName,SN);
return SName;
}
char * SetName(char * N)
{
strcpy(Name,N);
return Name;
}
char * SetFName(char * FN)
{
strcpy(FName,FN);
return FName;
}
bool & SetGender(bool G)
{
Gender = G;
return Gender;
 
}
Date * SetDate(int DD,int MM, int YYYY)
{
BDate.DD = DD;
BDate.MM = MM;
BDate.YYYY = YYYY;
return & BDate;
}
 
Person(){}
Person(char SN[],char N[],char F[],bool G,int DD,int MM,int YYYY):
Gender(G), BDate(DD , MM , YYYY)
{
strcpy(SName,SN);
strcpy(Name,N);
strcpy(FName,F);
}
 
Person(Person & P)
{
Gender = P.Gender;
strcpy(SName, P.SName);
strcpy(Name,P.Name);
strcpy(FName,P.FName);
BDate.DD = P.BDate.DD;
BDate.MM = P.BDate.MM;
BDate.YYYY = P.BDate.YYYY;
}
virtual ~Person(){}
 
friend istream & operator >> (istream & is,Person&);
 
friend ostream& operator<<(ostream&, Person&); 
 
 
Person & operator () (char SN[],char N[],char F[],bool G,int DD,int MM,int YYYY)
 
{
Gender = G;
BDate.DD = DD;
BDate.MM = MM;
BDate.YYYY = YYYY;
strcpy(SName,SN);
strcpy(Name,N);
strcpy(FName,F);
}
 
virtual char *GetSName()
{
return SName;
}
virtual char *GetName()
{
return Name;
}
virtual char *GetFName()
{
return FName;
}
virtual  boolGetGender()
{
return Gender;
}
virtual struct Date GetDate()
{
return BDate;
}
virtual int GetExperience(){return 0;}
};
ostream& operator <<(ostream & os,Person & P)
{
cout.widen(10);
return os<<P.GetSName()<<'\t'<<P.GetName()<<'\t'<<P.GetFName()
<<'\t'<<(P.GetGender()?'Ж':'Ч')<<'\t'
<<P.GetDate().DD<<'.'<<P.GetDate().MM<<'.'<<P.GetDate().YYYY;
}
istream& operator >> (istream & is,Person&P)
{
return is>>P.SetName("")>>P.SetSName("")>>P.SetFName("")
>>P.SetGender("")>>P.BDate.DD>>P.BDate.MM>>P.BDate.YYYY;
};
Organization.h
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#pragma once
#include <cstdlib>
#include <vector>
#include <cstring>
 
#include "Employee.h"
int const Amount_Employes = 40;
class Organization
{
Employee Array[ Amount_Employes ];
public:
static int NowCount;
void MainMenu()
{
char c;
while (true)
{
system("cls");
cout<<"Organizationstuff: "<<endl;
PrintAll();
cout<<endl<<"1 - Add Emploee "<<endl;
cout<<"2 - Edit Emploee "<<endl;
cout<<"3 - Print Personal Info "<<endl;
cout<<"4 - Count of E with Exp > then"<<endl;
cout<<"0 - Exit "<<endl;
c = getchar();
Employee temp;
int n;
switch (c)
{
default:
cout<<"Wrong choise "<<endl;
break;
case '0':
cout<<"Exit";
_sleep(200);
putchar('.');
_sleep(200);
putchar('.');
_sleep(200);
putchar('.');
_sleep(200);
exit(0);
break;
case '1':
cout<<"Enter Data:"<<endl;
cin>>temp;
Add(temp);
break;
case '3':
PrintPerson();
break;
case '2':
cout<<"Enter # of Emploee"<<endl;
cin>>n;
while (n>NowCount && n<0)
{
cout<<"Wrong #"<<endl;
cin>>n;
}
n--;
cout<<"Enter new Data:"<<endl;
cin>>temp;
Array[n] = temp;
break;
case '4':
cout<<"Then :"<<endl;
cin>>n;
cout<<"Exp Count:"<<ExpCount(n)<<endl;
break;
}
system("pause");
}
}
void * GetBase()
{
return Array;
}
int ExpCount(int N)
{
int Count = 0;
for (int i = 0; i < NowCount; i++)
{
if ( (Array[i]).GetExperience() > N)
{
++Count;
}
}
return Count;
}
void PrintAll()
{
cout<<"--------------------------------------------------------------------------------------------------------------------------------"<<endl;
cout<<"SNameNameFNameGenderBirth DateOrganizationSpecialtyPositionExperienceSalary"<<endl;
cout<<"--------------------------------------------------------------------------------------------------------------------------------"<<endl;
for (int i = 0; i < NowCount; i++)
{
cout<<Array[i]<<endl;
}
}
void PrintPerson()
{
cout<<"---------------------------------------------------"<<endl;
cout<<"SNameNameFNameGenderBirth Date"<<endl;
cout<<"---------------------------------------------------"<<endl;
for (int i = 0; i < NowCount; i++)
{
cout<<(Person)Array[i]<<endl;
}
}
void Add(Employee & E)
{
Array[NowCount] = E; 
++NowCount;
}
void Add(char SN[],char N[],char F[],bool G,int DD,int MM,int YYYY,char O[],
char Sp[],char P[],int S,int E)
{
Employee t(SN,N,F,G,DD,MM,YYYY,O,
Sp,P,S,E);
Array[NowCount] = t;
++NowCount;
}
Organization()
{
}
 
~Organization()
{
}
};
int Organization::NowCount = 0;
template<class T>
class Iterator
{
T * I;
public:
Iterator( Organization &t)
{
I = (T*)t.GetBase();
}
 
T & GetCurData()
{
return *I;
}
 
T & operator++()
{
return *I+=1;
}
T & operator++(int)
{
return *I+=1;
}
 
T & operator--()
{
return *I-=1;
}
 
T & operator--(int)
{
return *I-=1;
}
 
T & operator=(T & t)
{
return I=t;
}
 
Iterator()
{}
 
~Iterator()
{}
};
rozr.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define _CRT_SECURE_NO_WARNINGS
#include <cstdlib>
#include <iostream>
#include "Person.h"
#include "Employee.h"
#include "Organization.h"
using namespace std;
int main()
{
system("chcp 1251 > nul");
Organization FBI;
Iterator <Employee>I(FBI);
Employee S("Іванов","Іван","Іванович",0,12,5,87,"FBI","CS","Manager",5424,5);
FBI.Add(S);
FBI.Add("Сидорів","Сидір","Сидорович",0,11,2,90,"NASA","SA","Tester",3123,2);
Person * SA = new Employee("Головач","Олена","Федорівна",1,2,9,91,"FBI","FL","Makler",3444,1);
FBI.Add(*dynamic_cast<Employee*>(SA));
delete SA;
FBI.MainMenu();
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Композиция и Наследование классов  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2019, 21:33
Ответы с готовыми решениями:

Наследование и композиция
Добрый день. Помогите, пожалуйста, разобраться в приведенном примере. #include &lt;iostream&gt;...

Наследование, композиция и агрегация
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; class A {...

Наследование и композиция: фигура, круг
Получил вот такое задание Наследование и композиция. Фигура, координата, цвет, линия, фон,...

Композиция классов
Доброго времени суток! Есть задание. Реализовать класс ModelWindow , добавив поле курсора....

1
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
04.09.2019, 21:57 2
Лучший ответ Сообщение было отмечено Yamis как решение

Решение

Цитата Сообщение от Yamis Посмотреть сообщение
virtual boolGetGender()
{
return Gender;
}
Ты здесь пробел не потерял? В Person.h
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2019, 21:57

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Композиция классов
Доброго времени суток. У меня есть код, но у меня его не приняли, потому что нет композиции...

Композиция классов
Добрый день, Всем! Получил на лекции задание создать композицию классов и 3 классов. 1. Класс...

Композиция классов и объектов
Написать программу, в которой создаются и уничтожаются объекты, определенного пользователем типа....

Иерархия и композиция классов
Написать программу на с++ Совсем не поняла &gt;_&lt;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.