对象参数内部的对象初始化(构造函数)

时间:2020-09-19 15:21:11

标签: c++

您好,我尝试传递相同类型的类构造函数的对象,并且我喜欢将其另存为类中的元组。

所以我有以下代码:

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类为止? (类型是已知的,但我需要它的数量和元组的生成)

0 个答案:

没有答案