2016-12-29 4 views
0

Ich versuche, das zweite Element in meinem mainRegister Karte zuzugreifen:Zugriff auf in der Karte zweite Element, das Objektzeiger ist

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: 

}; Hier

ist, was ich versuche zu tun:

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; 
    } 
    } 
} 

Mein Hauptziel ist Element in der Karte zu finden, das zweite Element die gleiche UUID wie das Objekt hat, die Methode übergeben wird, und dann bewegen Dieses Objekt soll Registervektor archivieren und anschließend dieses Element aus der Karte entfernen.

Die Fehler, die ich erhalte, sind:

-struct std :: _ Rb_tree_const_iterator>‘hat kein Mitglied namens 'zweite' |

-keine übereinstimmende Funktion für den Aufruf von 'std :: vector :: push_back (second_t>)' |

Ich weiß, dass wahrscheinlich die Art, wie ich versuche, auf das zweite Element jedes Paares in der Karte zuzugreifen, völlig falsch ist, aber ich weiß nicht wirklich, wie das gemacht werden könnte.

+2

versuchen mit 'it-> zweit-> getUUID()' ('->' statt von '.', um auf' second' zuzugreifen) – max66

+0

Sie deneferenzieren ein Objekt vom Zeigertyp mit dem Punktoperator (.). tue, wie von @ max66 vorgeschlagen – someone

Antwort

1

Ihre if Aussage ist nicht mit dem it Iterator richtig, Iteratoren sind zeiger wie so sein sollte:

if (it->second->getUUID() == rent->getUUID()) 
     ^^ 
Verwandte Themen