Функции-члены C ++ для начинающих

0

Таким образом, в основном я играю с простым классом сотрудников, который предполагает сопоставить имя с уникальным номером идентификатора. Теперь вот дело. Я хочу создать функцию-член, которая не принимает аргументов, но возвращает карту имени и идентификатора сотрудника. Я хочу, чтобы вызов был интуитивным, например. employee.map_this()//returns a map

class Employee
{
public:
    Employee() = default;
    Employee(const string& pname);  
    Employee& operator=(const Employee&) = delete; 
    Employee(const Employee&) = delete;

private:
    const string name;
    static int ID_no;
    const string employee_ID;
    map<const string, const string> map_this();
};

int Employee::ID_no = 0001;

Employee::Employee(const string& pname) : name(pname), employee_ID(to_string(ID_no))
{ 
    ID_no++;
}

map<const string, const string> Employee::map_this() 
{
    //     How do I do this????
}
  • 3
    Вы хотите вернуть std::pair или std::map ? Разве карта не была бы излишним здесь? Карты обычно используются в классах, которые управляют многими объектами, в то время как это данные для каждого объекта, которые вы хотите вернуть в одном вызове функции.
  • 0
    Где находится элемент данных карты?
Показать ещё 2 комментария
Теги:
class
member-functions

1 ответ

0

std::map - это не то, что вы думаете. Карта используется, если вы хотите, например, сопоставить все идентификационные номера сотрудников с соответствующими объектами Employee.

Если вы хотите вернуть два значения в качестве одного объекта, я предлагаю вам использовать std::pair.

std::pair<const std::string, const std::string> Test::getNameAndId() {
    return {name, employee_ID};
}

И тогда вы можете ввести имя и идентификатор в std::pair следующим образом:

Employee employee{"Carl"};
auto& p = employee.getNameAndId();
std::cout << "Name: " << p.first << ", Id: " << p.second << std::endl;

Выходы:

Name: Carl, Id: 1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню