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

enum и class как составляющие другого class

03.03.2013, 01:39. Показов 1642. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс date к employee в private?

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
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
/*class date
{
   private:
      int day, mons, year;
   public:
      date(): day(0), mons(0), year(0)
      {}
      void get_date ()
      {
      cout<<"Ââåäèòå äåíü, ìåñÿö è ãîä â ôîðìàòå \"dd/mm/yy\":"<<endl;
      cout<<"äåíü ";
      cin>>day;
      cout<<"ìåñÿö: ";
      cin>>mons;
      cout<<"ãîä: ";
      cin>>year;
      }
      void show_date()const
      {cout << day << "/" << mons << "/" <<year<<endl;} 
};*/
////////////////////////////////////////////////////////////////////////////////
class employee
{
   private:
       //date D1;
       int nomer; 
       float posobie;
       enum etype {laborer, secretary, manager, accoutant, executive, researcher};
   public:
      employee(): date (0), nomer(0), posobie(0.0)
      {}
      employee(etype word )
      {}
      void get_employee ();
      void show_employee()const;
};
//------------------------------------------------------------------------------
void employee::get_employee ()
      {
           // 
            cout<<"Ââåäèòå äàòó ïðèåìà íà ðàáîòó â ôîðìàòå \"dd/mm/yy\": ";
            cin>>date; 
            cout<<"Ââåäèòå íîìåð: "; cin>>nomer; 
            cout<<"Ââåäèòå îêëàä: "; cin>>posobie; 
            cout<<"Ââåäèòå íàçâàíèå äîëæíîñòè "<<endl
            <<"(laborer, secretary, manager, accoutant, executive, researcher):";
            cin>>word ;
      }
//------------------------------------------------------------------------------      
void employee::show_employee()const
      {cout<<"\nÄàòà ïðèåìà íà ðàáîòó: "<<date<<"\nÍîìåð ñîòðóäíèêà: "<<nomer
       <<"\nÎêëàä: "<<posobie<<"\nÄîëæíîñòü: ";
     /*  switch(etype)
        {       
                case 0: cout << "laborer" << endl; break;
                case 1: cout <<  "secretary" << endl; break;
                case 2: cout << "manager" << endl; break;
                case 3: cout <<  "accountant" << endl; break;
                case 4: cout << "executive" << endl; break;
                case 5: cout <<  "researcher" << endl; break;
        }*/
       }    
////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale (LC_ALL, "russian");
employee x1, x2;
x1.get_employee ();
x1.show_employee();
system("pause");
return 0;
}
Добавлено через 1 час 50 минут
Данный код предназначен для выполнения нескольких простых функций: класс employee служит для хранения номера сотрудника, его пособия, и даты (она представляет собой отдельный класс с днем, месяцем и годом), а так же должности (enum - где представлены несколько должностей в перечислении). основная проблема - прикрепить класс даты к классу employee. Нужно еще инициализировать перечисление с клавиатуры. Буду благодарен за любую помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2013, 01:39
Ответы с готовыми решениями:

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Как вызвать функцию class A, из функции class B
Как вызвать функцию class A, из функции class B К примеру Class A{ public: int a,b; void fun1(); } Class B:public A{ ...

Реализация enum class
Привет всем! У меня тут одна проблема, не могу внедрить enum class свой код. Вот оригинальный код: Main: #include...

4
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2013, 08:43
Как-то так (только без enum, по моему, оно здесь ни к чему):
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
#include <iostream>
#include <string>
#include <windows.h>
#include <cstdlib>
using namespace std;
 
////////////////////////////////////////////////////////////////////////////////
class date
{
   private:
      int day;
      int mons;
      int year;
   public:
      date(): day(0), mons(0), year(0)
      {}
      void set_date ()
      {
        cout << "день ";
        cin >> day;
        cout << "месяц: ";
        cin >> mons;
        cout << "год: ";
        cin >> year;
      }
      void show_date()const
      {
        cout << day << "/" << mons << "/" << year;
      } 
};
////////////////////////////////////////////////////////////////////////////////
class employee
{
   private:
       date D1;
       int nomer; 
       float posobie;
       string job_title;
   public:
      employee(): nomer(0), posobie(0.0), job_title("")
      {}
      
      void set_employee ();
      void show_employee()const;
};
//------------------------------------------------------------------------------
void employee::set_employee ()
{
    // 
    cout<<"\nВведите дату приема на работу в формате \"dd/mm/yy\": \n";
    D1.set_date();
    cout << "Введите номер: "; cin >> nomer; 
    cout << "Введите оклад: "; cin >> posobie; 
    cout << "Введите название должности: " ;
    cin >> job_title ;
}
//------------------------------------------------------------------------------      
void employee::show_employee()const
{
    cout << "\nДата приема на работу: ";
    D1.show_date(); 
    cout << "\nНомер сотрудника: " << nomer
    << "\nОклад: " << posobie << "\nДолжность: ";
    cout << job_title << endl << endl;
    
}    
////////////////////////////////////////////////////////////////////////////////
int main()
{
    //setlocale (LC_ALL, "russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    employee x1, x2;
    
    x1.set_employee ();
    x2.set_employee ();
    
    x1.show_employee();
    x2.show_employee();
    
    system("pause");
    return 0;
}
1
6 / 6 / 0
Регистрация: 27.02.2013
Сообщений: 23
03.03.2013, 11:56  [ТС]
Спасибо за ответ. Я думал, что для доступа к функциям класса, нужно использовать наследование:
C++
1
2
3
4
class date
{};
class employee: public date
{}
Видимо, нужно больше читать...

По поводу enuma, да он мне тоже не нравится, но по условию должен быть.
Получилось такое:
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
class employee//: public date
{
   private:
       date D1;
       int nomer; 
       float posobie;
       enum etype {laborer, secretary, manager, accountant, executive, researcher};
       etype temp;
   public:
      employee(): nomer(0), posobie(0.0)
      {}
      void get_employee ();
      void show_employee()const;
};
//------------------------------------------------------------------------------
void employee::get_employee ()
      {
            char letter;
            D1.get_date();
            cout<<"Введите номер: "; cin>>nomer; 
            cout<<"Введите оклад: "; cin>>posobie; 
            cout<<"Введите первую букву должности "<<endl
            <<"(laborer, secretary, manager, accoutant, executive, researcher):";
            cin >> letter;
            switch(letter)
        {       
                case 'l': temp = laborer; break;
                case 's': temp = secretary; break;
                case 'm': temp = manager; break;
                case 'a': temp = accountant; break;
                case 'e': temp = executive; break;
                case 'r': temp = researcher; break;
        }
      }
//------------------------------------------------------------------------------      
void employee::show_employee()const
      {
       cout << "\nДата приема на работу: ";
       D1.show_date();
       cout<<"Номер сотрудника: "<<nomer
       <<"\nОклад: "<<posobie<<"\nДолжность: ";
       switch(temp)
        {       
                case 0: cout << "laborer" << endl; break;
                case 1: cout <<  "secretary" << endl; break;
                case 2: cout << "manager" << endl; break;
                case 3: cout <<  "accountant" << endl; break;
                case 4: cout << "executive" << endl; break;
                case 5: cout <<  "researcher" << endl; break;
        }
       }
Слишком топорно выглядит. Есть ли возможность упростить использование enum (без его устранения)?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.03.2013, 00:05
Цитата Сообщение от Рики Посмотреть сообщение
Есть ли возможность упростить использование enum (без его устранения)?
Надо подумать. Небольшое замечание: get переводится как получить, извлечь и т.п. Обычно используется для вывода данных. Для внесения(записи, установки) данных традиционно используется слово set.

Добавлено через 2 часа 30 минут
Я бы так сделал:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string>
#include <windows.h>
#include <cstdlib>
using namespace std;
 
const int N = 6;
string arrstr[N] = {"laborer", "secretary", "manager", "accoutant", "executive", "researcher"};
 
///////////////////////////////////////////////////////////////////////////////////////////////
class date
{
   private:
      int day;
      int mons;
      int year;
   public:
      date(): day(0), mons(0), year(0)
      {}
      
      void set_date ()
      {
        cout << "день ";
        cin >> day;
        cout << "месяц: ";
        cin >> mons;
        cout << "год: ";
        cin >> year;
      }
      
      void show_date() const
      {
        cout << day << "/" << mons << "/" << year;
      } 
};
//////////////////////////////////////////////////////////////////////////////////
 
class employee
{
   private:
       date D1;
       int nomer; 
       float posobie;
       enum etype {laborer, secretary, manager, accountant, executive, researcher};
       etype job_title;
   
   public:
      employee(): nomer(0), posobie(0.0)
      {}
      
      void set_employee ();
      void show_employee() const;
};
//------------------------------------------------------------------------------
void employee::set_employee()
{
    // 
    cout<<"Введите дату приема на работу в формате \"dd/mm/yy\": \n";
    D1.set_date();
    cout << "Введите номер: "; cin >> nomer; 
    cout << "Введите оклад: "; cin >> posobie; 
    cout << "Введите индекс должности:" << endl;
    for (int i = 0; i < N; ++i)
    {
        cout << i << ' ' << arrstr[i] << endl;
    }
    
    int number;
    do
    {
        cin >> number;
        if (number >= 0 && number < N)
        {
            job_title = static_cast<etype>(number);
            cout << endl;
            break;
        }
        else cout << "Нет такого индекса. Повторите ввод." << endl;
    
    } while (true);
 
}
//------------------------------------------------------------------------------      
void employee::show_employee()const
{
    cout << "\nДата приема на работу: ";
    D1.show_date(); 
    cout << "\nНомер сотрудника: " << nomer
    << "\nОклад: " << posobie << "\nДолжность: ";
    cout << arrstr[job_title] << endl << endl;
    
}    
 
/////////////////////////////////////////////////////////////////////////////////////////
 
int main()
{
    //setlocale (LC_ALL, "russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    employee x1, x2;
    x1.set_employee ();
    x2.set_employee ();
    
    x1.show_employee();
    x2.show_employee();
    
    system("pause");
    return 0;
}
1
6 / 6 / 0
Регистрация: 27.02.2013
Сообщений: 23
04.03.2013, 14:14  [ТС]
Да, интересно. Действительно, с set получается логичнее. Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2013, 14:14
Помогаю со студенческими работами здесь

Сравнение enum class
Добрый вечер, подскажите, что его не устраивает? enum class Type { A, B, C, };

Перегрузка оператора ++ для enum class
Доброго времени суток. Имеется перечисление: enum class Month { jan = 1, feb, mar, apr, may, jun, jul, aug, sep, nov, dec ...

Перегрузка оператора присвоения в enum class
Всем доброго дня. Есть enum: typedef unsigned char byte; enum class MyEnum : byte { A, B, C

Работа с class ами. Заполнение дин. массива типа class
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Плиз помогите. Не знал, что я такой чайник.) Итак: есть два класса: CMyClass.h CMyClass.cpp и


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru