您好,我尝试传递相同类型的类构造函数的对象,并且我喜欢将其另存为类中的元组。
所以我有以下代码:
class endpoint_keys_impl {
public:
endpoint_keys_impl() = default;
template<typename ...PO>
explicit endpoint_keys_impl(PO... properties) : keys(std::tuple(properties)...) {}
private:
std::tuple<PropertyObject> keys;
};
这从PropertyObject类型的构造函数参数构造一个元组。
PropertyObject ==属性
所以我可以用以下方法构造它:
endpoint_keys_impl test { property("prop1"), property("prop2") };
它工作正常,我使用了两个子类,如下所示:
struct websocket_endpoint_keys : public endpoint_keys_impl {
websocket_endpoint_keys() = default;
template<typename ...PO>
explicit websocket_endpoint_keys(PO... properties) : endpoint_keys_impl(properties...) {};
};
另一个为rest_endpoint_keys。
我在名为data_endpoint的类中使用了展位类:
template <typename T>
class data_endpoint {
public:
data_endpoint(std::string path, rest_endpoint_keys rest_keys, websocket_endpoint_keys websocket_keys)
: _internal_rest_keys(std::move(rest_keys)),
_internal_websocket_keys(std::move(websocket_keys)),
path(std::move(path)) {};
};
现在,当我尝试以更多方式初始化这些类时,出现错误,为什么?
data_endpoint<sometype> endpoint
{"symbols",
rest_endpoint_keys {
property("prop1"),
property("prop2")
},
websocket_endpoint_keys {
property("prop1"),
property("prop2")
}
};
编辑:
我认为问题在于,endpoint_keys_impl中的元组只有一种类型。但是当我有更多项目时,元组应该具有std :: tuple
有一种方法可以在该类中生成std :: tuple,而无需对所有参数进行参数化,直到data_endpoint类为止? (类型是已知的,但我需要它的数量和元组的生成)