Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рики
6 / 6 / 1
Регистрация: 27.02.2013
Сообщений: 23
03.03.2013, 01:39     enum и class как составляющие другого class #1
Как организовать ввод 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. Нужно еще инициализировать перечисление с клавиатуры. Буду благодарен за любую помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2013, 01:39     enum и class как составляющие другого class
Посмотрите здесь:

class выводящий эллементы другого класса... C++
C++ Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') C++
Работа с class ами. Заполнение дин. массива типа class C++
vector<[class]> in class и перегрузка (ostream) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.03.2013, 08:43     enum и class как составляющие другого class #2
Как-то так (только без 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;
}
Рики
6 / 6 / 1
Регистрация: 27.02.2013
Сообщений: 23
03.03.2013, 11:56  [ТС]     enum и class как составляющие другого class #3
Спасибо за ответ. Я думал, что для доступа к функциям класса, нужно использовать наследование:
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 (без его устранения)?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.03.2013, 00:05     enum и class как составляющие другого class #4
Цитата Сообщение от Рики Посмотреть сообщение
Есть ли возможность упростить использование 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;
}
Рики
6 / 6 / 1
Регистрация: 27.02.2013
Сообщений: 23
04.03.2013, 14:14  [ТС]     enum и class как составляющие другого class #5
Да, интересно. Действительно, с set получается логичнее. Спасибо большое!
Yandex
Объявления
04.03.2013, 14:14     enum и class как составляющие другого class
Ответ Создать тему
Опции темы

Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru