2016-12-29 65 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的std :: _ Rb_tree_const_iterator>」沒有名爲成員 '第二' |

-no調用'std :: vector :: push_back(second_t>)'的匹配函數|

我知道,可能我試圖訪問地圖中每一對的第二個元素的方式是完全錯誤的,但我真的不知道如何做到這一點。

+2

嘗試用'它 - >二線> getUUID()'(' - >'代替'.'來訪問'second') – max66

+0

你使用點(。)運算符解引用指針類型的對象。按照@ max66的建議進行操作 – someone

回答

1

if說法是不正確使用it迭代器,迭代器是指針,像這樣應該是:

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