创建一个将容器 "X" 作为参数的函数,它将 X.size() 参数传递给它调用的可变参数函数

Creating a function that takes a container "X" as a parameter, which passes X.size() parameters to a variadic function that it calls

我目前正在开发一个 HTTP API,我想用它来对数据库执行 CRUD 操作。我尝试为它编写尽可能通用和模块化的代码。我正在使用 MySQL X DevAPI.

目前,我遇到了以下问题:

mysqlx::Result MySQLDatabaseHandler::jsonToCUDOperation (const nlohmann::json& json, mysqlx::Table& table, int crudEnum)

上面的函数将对 json 对象的引用、对 table 对象的引用和一个整数作为参数。

我想要这个函数做的是:

例如,假设一个 table "users",以及一个 json 对象 "X" 具有以下内容:

{"id":1,"username":"test_user","email":"test@test.com","first_name":"test"}

现在,当我像这样调用函数时

jsonToCUDOperation(X, users, MySQLDatabaseHandler::cud::create);

我希望函数解析 json 对象并根据 json 对象的键和值调用带有参数(和参数计数)的 mysqlx::Table::Insert 函数,所以最终打电话

users.insert("id", "username", "email", "first_name") .values("1", "test_user", "test@test.com", "test").execute();

我首先考虑使用模板函数实现此行为,但后来我认为这没有意义,因为模板函数定义是在编译时生成的,而我想要的是在运行时需要动态行为。所以我认为不可能按照我的意图设计它,因为我的理解是 C++ 函数的行为不能根据您传递给它的参数在运行时更改。但我想,在我开始开发一个只能处理有限 json 对象大小的解决方案之前,我会在这里询问以确保我实际上不能做我想做的事。

在此先感谢您的启发

您实际上可以将 STL 容器传递给 MySQL 的 X DevAPI

提供的 CRUD 函数