2016-12-31 135 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

相关问题