Я пытаюсь получить доступ к второму элементу в моей 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>)' |
Я знаю, что, вероятно, способ, которым я пытаюсь получить доступ к второму элементу каждой пары на карте, совершенно неверен, но я действительно не знаю, как это можно сделать.
попробовать с 'it-> второго> getUUID()' ('- вместо>' из '.' для доступа к' second') – max66
вы разыскиваете объект типа указателя, используя оператор точки (.). делать так, как было предложено @ max66 – someone