有没有办法在一个吸气剂中返回三个容器?

时间:2016-12-31 16:13:08

标签: c++ c++11 tuples 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();

};

我希望有可能从其他类访问这些容器,这就是为什么我想设置一些getter,但这就是我的问题。我不知道我做错了什么,但我得到的错误是:

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 个答案:

答案 0 :(得分:4)

类型应为

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

字段名称无效。

作为元组的替代,你可以定义一个包含3个容器的结构类型并返回它。