Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 2
1

Создание иерархии классов

04.07.2018, 22:53. Показов 1350. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста! Проблема со второй частью задания :"Создать производный
класс Student, имеющий поле года обучения. Определить методы переназначения и увеличения года обучения.". Сижу еже вторые сутки. Вот с этим проблема:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Student::Student(string n, int a, string g, double w, int y)
    : Man(n, a, g, w)
{
    year = y;
}
Student Student::operator++() //увеличение года обучения
{
    return Student(name, age, gender, weight, this->year++);
}
 
 
ostream& operator<<(ostream& stream, Student& ob)
{
    stream << "Человек (Имя, возраст, пол, вес, год обучения: \n" << ob.name << ", " << ob.age
           << ", " << ob.gender << ", " << ob.weight << ", ";
    return stream;
}
istream& operator>>(istream& stream, Student& ob)
{
    stream >> ob.name >> ob.age >> ob.gender >> ob.weight;
    return stream;
}
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить
методы переназначения имени, изменения возраста и изменения веса. Создать производный
класс Student, имеющий поле года обучения. Определить методы переназначения и увеличения года обучения.

Не могу ничего придумать. Компилятор пишет, что operator ++() не определен в class Student.

И еще почему то не получается создать многофайловый проект, или все верно?

Вот код с++:
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
#pragma once
#pragma once
#include <iostream>
 
using namespace std;
 
class Man
{
protected:
    string name; //поле - имя
    int age; //поле - возраст
    string gender; //поле - пол
    double weight; //поле - вес
 
public:
    Man(string str = "Ivan", int a = 0, string str1 = "m", double b = 0)
        : name(str)
        , age(a)
        , gender(str1)
        , weight(b){}; //конструктор с умолчанием
    void set_Man(string, int, string, double); //установка параметров человека
    void set_name(string n)
    {
        name = n;
    }
    void set_age(int a)
    {
        age = a;
    }
    void set_gender(string g)
    {
        gender = g;
    }
    void set_weght(double w)
    {
        weight = w;
    }
 
    string get_name()
    {
        return name;
    } //получение name
    int get_age()
    {
        return age;
    } //и т.д.
    string get_gender()
    {
        return gender;
    }
    double get_weight()
    {
        return weight;
    }
 
    friend istream& operator>>(istream& stream, Man& ob); //прототип вставки в поток
    friend ostream& operator<<(ostream& stream, Man& ob); //прототип извлечения из потока
};
 
 
-------- -
 
 
#include "Man.h"
#include <iostream>
#include <cstdio> //для работы со строками и использования gets()
#include <string>
    using namespace std;
 
void Man::set_Man(string n, int a, string g, double w)
{
    name = n;
    age = a;
    gender = g;
    weight = w;
}
 
 
ostream& operator<<(ostream& stream, Man& ob)
{
    stream << "Человек (Имя, возраст, пол, вес: " << ob.name << ", " << ob.age << ", " << ob.gender
           << ", " << ob.weight << ", ";
    return stream;
}
istream& operator>>(istream& stream, Man& ob)
{
    stream >> ob.name >> ob.age >> ob.gender >> ob.weight;
    return stream;
}
 
 
// Student наследует Man
class Student : public Man
{
protected:
    int year; //поле - года обучения
 
public:
    Student(string name = "Ivan", int age = 0, string gender = "m", double weight = 0.0,
        int y = 0); //конструктор с умолчанием
    void set_year(int y)
    {
        year = y;
    } //установка года обучения
    int get_year()
    {
        return year;
    } //возвращение года обучения
    //    friend Student operator++ ();
    friend istream& operator>>(istream& stream, Student& ob); //прототип вставки в поток
    friend ostream& operator<<(ostream& stream, Man& ob); //прототип извлечения из потока
};
 
 
Student::Student(string n, int a, string g, double w, int y)
    : Man(n, a, g, w)
{
    year = y;
}
Student Student::operator++() //увеличение года обучения
{
    return Student(name, age, gender, weight, this->year++);
}
 
 
ostream& operator<<(ostream& stream, Student& ob)
{
    stream << "Человек (Имя, возраст, пол, вес, год обучения: \n" << ob.name << ", " << ob.age
           << ", " << ob.gender << ", " << ob.weight << ", ";
    return stream;
}
istream& operator>>(istream& stream, Student& ob)
{
    stream >> ob.name >> ob.age >> ob.gender >> ob.weight;
    return stream;
}
 
 
#include "Man.h"
#include <iostream>
#include <cstdio> //для работы со строками и использования gets()
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите данные человека (имя, возраст, пол, вес) для класса Man: \n";
    Man person1;
    string name;
    int age;
    string gender;
    double weight;
    cout << "Введите имя:";
    cin >> name;
    cout << "возраст:";
    cin >> age;
    cout << "пол:";
    cin >> gender;
    cout << "вес:";
    cin >> weight;
 
    person1.set_Man(name, age, gender, weight);
    cout << person1.get_name() << " " << person1.get_age() << " " << person1.get_gender() << " "
         << person1.get_weight() << endl;
 
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2018, 22:53
Ответы с готовыми решениями:

Создание иерархии классов
Создать абстрактный базовый класс Struct, с виртуальными методами изменения и получения значения...

Создание иерархии классов точка, отрезок, треугольник (ошибка в коде)
создать иерархию классов точка, отрезок, треугольник должно основаться на объектах родителях ...

Вверх по иерархии классов
Доброго вечера, уважаемые. Помогите советом, или матюком, кто как может, все одно буду благодарен)...

Цепочка иерархии классов
Какой доступ будет в цепочке protected - public - protected?...

1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
08.07.2018, 08:51 2
C++
1
Student & operator++();
C++
1
2
3
4
5
Student & Student::operator++()
{
    ++year;
    return *this;
}
C++
1
2
Student s;
++s;
0
08.07.2018, 08:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2018, 08:51
Помогаю со студенческими работами здесь

Главный в иерархии классов класс
Какой главный в иерархии классов класс в C++? Вот в C# - это System.Object.

Затрудние в названии иерархии классов
Здравствуйте камрады. Помогите обозвать иерархию классов, в голову ничего толкового не приходит....

Организация разветвленной иерархии классов
Цель: организовать разветвленную иерархию классов с применением абстрактных классов. Нужна...

Связанный список для иерархии классов
Есть иерархия классов точка-&gt;треугольник-&gt;треугольник в треугольнике. Всю эту муть нужно хранить в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru