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

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

03.03.2013, 01:39. Показов 1654. Ответов 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
5500 / 4895 / 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
5500 / 4895 / 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
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru