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 类型的构造函数参数构造一个元组。
属性对象 == 属性
所以我可以用:
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<PropertyObject, PropertyObject>。
有没有一种方法可以在该类中生成 std::tuple 而无需参数化所有直到 data_endpoint 类?(类型是已知的,但我需要它的计数和元组的生成)
解决方案
推荐阅读
- javascript - JSON.stringify 显示属性值,但不能直接访问属性
- javascript - 这个骆驼条款有什么问题
- php - 使用 2 个 json 对象和按日期排序的 php 生成 html 表
- android - 在 LinearLayout 中垂直添加视图
- wordpress - nginx 位置正则表达式与 wp-login.php 或 wp-admin.php 不匹配,但其他所有内容
- php - 布局中的未定义变量错误(Laravel)
- javascript - 如何为 Javascript 刽子手游戏添加难度
- android - Android模拟器adb shell sqlite3:无法访问或找不到
- postgresql - 在 2019 年 10 月 31 日之前更新您的 Amazon RDS SSL/TLS 证书
- python - 在 Python 中进行模式匹配和替换的更好方法是什么?