Вопрос

привет, я пытаюсь создать карту, содержащую следующие объекты:класс Сотрудник >> получен из Сотрудника:это следующие классы:Рабочий, менеджер и вице-менеджер.На моей карте я хочу, чтобы сотрудник был отсортирован по его идентификатору, который является Чар* Я попытался создать такую ​​карту: `

multimap<const string,Employee*> t1
t1<string,Employee>::iterator myIterator;
Date e(17,6,1985);
Address a("somecity","somestreet",15,12);
ViceManager* d = new ViceManager("John","Doh","035845778", e,a,"03-9458353",10000,85,"gsdasda");
t1.insert(make_pair(d->GetId(),d));
myIterator=t1.begin();
myIterator->comp_value->PrintEmployee();

у меня много проблем в моем коде, мне бы очень хотелось услышать, что вы, ребята, хотите сказать, спасибо заранее

Это было полезно?

Решение

Прежде всего, итератор — это тип, который определяется в multimap класс шаблона в вашем случае.Итак, вам нужно написать следующее:

multimap<const string,Employee*>::iterator myIterator;

Что касается второй части вашего вопроса, вы можете добавить новое поле в Employee класс, который будет определять тип сотрудника (Worker, Manager и ViceManage).Затем выполните кастинг в зависимости от этого поля:

if ( myIterator->type == VICE_MANAGER ) 
  static_cast<ViceManager*>(*myIterator->second)->PrintEmployee();

Если ваши классы полиморфны (что является предпочтительным решением), вы можете вызвать PrintEmployee без дополнительного приведения:

myIterator->second->PrintEmployee();

Другие советы

Действительно, ошибок всего две, обе связаны с итераторами.

multimap<const string,Employee*> t1;
multimap<string,Employee*>::iterator myIterator; //Note the corrected iterator type
Date e(17,6,1985);
Address a("somecity","somestreet",15,12);
Employee* d = new ViceManager("John","Doh","035845778", e,a,"03-9458353",10000,85,"gsdasda");
t1.insert(make_pair(d->GetId(),d));
myIterator=t1.begin();
myIterator->second->PrintEmployee(); //Note the way of accessing the value

Я заметил, что этот код на самом деле не использует преимущества функциональности карты, я предполагаю, что это касается других разделов кода.

Редактирование, чтобы исправить некоторые ошибки, которые я пропустил

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top