2016-12-29 1 views
0

Я пытаюсь получить доступ к второму элементу в моей mainRegister карте:Доступ второго элемента в карте, которая является указателем на объекте

class Manager 
{ 
private: 
    std::map<boost::uuids::uuid, Rental*> mainRegister; 
    std::vector <Rental*> archiveRegister; 
    std::vector<Client*> ClientRegister; 
    std::vector<Vehicle*> VehicleRegister; 

public: 
    Manager(); 
    void createRental(); 
    void deleteRental(Rental rent); 
    std::string showArchive() const; 
    std::string showMain() const; 
    std::string showVehicles() const; 
    std::string showClients() const; 
    void sortDate(); 
    void sortClient(); 
    bool checkVehicle(std::map <Vehicle*, Rental*> myMap); 
    virtual ~Manager(); 

protected: 

};

Вот что я пытаюсь сделать:

void Manager::deleteRental(Rental* rent) 
{ 
    for (auto it = mainRegister.cbegin(); it != mainRegister.cend() 
    { 
    if (it.second->getUUID() == rent->getUUID()) 
    { 
     archiveRegister.push_back(it.second); 
     mainRegister.erase(it++); 
    } 
    else 
    { 
     ++it; 
    } 
    } 
} 

Моя главная цель состоит в том, чтобы найти элемент в карте, что второй элемент имеет такой же UUID, что и объект, который передается методу, а затем перейти этот объект архивирует регистр вектора, а затем удаляет этот элемент с карты.

Ошибки, которые я получаю, являются:

-struct станд :: _ Rb_tree_const_iterator>»не имеет ни одного члена с именем 'второго' |

-соответствующая функция для вызова 'std :: vector :: push_back (second_t>)' |

Я знаю, что, вероятно, способ, которым я пытаюсь получить доступ к второму элементу каждой пары на карте, совершенно неверен, но я действительно не знаю, как это можно сделать.

+2

попробовать с 'it-> второго> getUUID()' ('- вместо>' из '.' для доступа к' second') – max66

+0

вы разыскиваете объект типа указателя, используя оператор точки (.). делать так, как было предложено @ max66 – someone

ответ

1

Ваше if заявление не использует it итератор правильно, итераторы указатель типа так должно быть:

if (it->second->getUUID() == rent->getUUID()) 
     ^^ 
Смежные вопросы