2016-12-31 139 views
-1

我想知道有沒有辦法一次訪問三個容器。 我有喜歡類:有沒有辦法在一個getter中返回三個容器?

class DataContainer 
{ 

private: 
    std::vector<Rental*> rentals; 
    std::vector<Vehicle*> vehicles; 
    std::vector<Client*> clients; 

public: 
    DataContainer(); 
    bool loadObjects(); 
    bool createRentals(); 
    std::string showVehicles() const; 
    std::string showClients() const; 
    std::string showDetails() const ; 
    std::tuple< std::vector<Vehicle*>type1, std::vector<Client*>type2, std::vector<Rental*>type3 > getContainers(); 
    virtual ~DataContainer(); 

}; 

我想有可能從其他類對這些容器的訪問,這就是爲什麼我想設置一些吸氣,但是這纔是我的問題。我不知道如果我做錯了什麼,但我得到的錯誤是:

include\DataContainer.h|74|error: template argument 1 is invalid| 
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 1 second(s)) ===| 

我的功能看起來是這樣的:

std::tuple< std::vector<Vehicle*>type1, std::vector<Client*>type2, std::vector<Rental*>type3 > DataContainer::getContainers() 
{ 
    return std::make_tuple(vehicles,clients,rentals); 
} 

希望有人能夠給我一些暗示,如果這有什麼區別,我正在C++ 11上工作。

+1

'std :: tuple '預計'T1,T2,T3'是類型。 'std :: vector type1'不是一個有效的類型。 'std :: vector '是。 – DeiDei

+2

'type2'等不應該在'std :: tuple type1,std :: vector type2,std :: vector type3> getContainers();'行。但是,這看起來像是相當破碎的課程設計。 –

+1

即使錯誤得到解決,您最終可能會複製**很多指針,以返回三個向量。你想達到什麼目的? – StoryTeller

回答

4

的類型應該是

std::tuple< std::vector<Vehicle*>, std::vector<Client*>, std::vector<Rental*>> 

字段名無效。

作爲元組的替代方法,您可以定義一個包含3個容器的結構類型並返回它。

+2

打敗我!有一個upvote :) – StoryTeller

相關問題