#include <iostream>
enum etype { laborer, secretary, manager, accountant, executive, researcher };
struct date
{
int day;
int month;
int year;
};
struct employee
{
int number;
float pension;
etype post;
date start;
};
int main()
{
employee first;
char dummychar;
std::cout << "Добрый день! Введите ваши данные о сотруднике!\nДля начала его номеp\b";
std::cin >> first.number;
std::cout << "Отлично. Теперь введите его оклад.\n";
std::cin >> first.pension;
std::cout << "Введите дату начала его работы в формате dd/mm/year\n";
std::cin >> first.start.day >> dummychar >> first.start.month >> dummychar >> first.start.year;
std::cout << "Осталось только ввести его должность. Не ошибитесь\n";
std::cout << "Представленные должности: \n";
for(first.post i = laborer; i <= researcher; ++i) //Интересует именно вот эта часть кода
{
std::cout << i << " ";
}
std::cin >> first.post;
return 0;
}
// .h файл
#define ENUM_MAP(XX) \
XX(0, laborer, Laborer help msg) \
XX(1, secretary, Secretary help msg)\
XX(2, manager, Manager help msg)\
XX(3, accountant, Accountant help msg)\
XX(4, executive, Executive help msg)\
XX(5, researcher, Resercher help msg)
enum etype
{
#define XX(num, name, string) name = num,
ENUM_MAP(XX)
#undef XX
};
// .cpp файл, включающий предыдущий .h
#define XX(num, name, string) #string,
const char * enum_msg[] = [
ENUM_MAP(XX)
]
#undef XX
#include "enum.h"
BETTER_ENUM(etype, int, laborer, secretary, manager, accountant, executive, researcher);
//...
struct employee {
int number;
float pension;
etype post = etype::laborer;
date start;
};
int main()
{
//... пропущено
for (etype i : etype::_values())
{
std::cout << i << " ";
}
std::cout << std::endl;
std::string etypeStr;
std::cin >> etypeStr;
first.post = etype::_from_string(etypeStr.c_str());
}