我有一个字符串数组,我想将其解压缩为函数的参数,例如:
Blynk.SetProperty(V0,“labels”,“label1”,“label2”,“label3”);
其中字符串数组为:labels={“label 1”,“label 2”,“label 3”}
这个数组实际上是由指向具有'name'成员的对象的指针数组构建的,例如:
for (unsigned int i=0; i<NUM_OBJECTS; i++) {
labels[i] = objects[i]->name;
}
其中objects数组是在编译时定义的。
这可能吗?
那么,您可以执行如下操作:
#include <utility>
template <std::size_t ... Is>
void call(std::index_sequence<Is ...>, char const * labels []) {
Blynk.setProperty(V0, "labels", labels[Is] ...);
}
int main() {
char const * labels [NUM_OBJECTS] = { "l1", "l2", "l3" };
call(std::make_index_sequence<NUM_OBJECTS>{}, labels);
return 0;
}
但是,由于参数的数量在编译时已知,因此将标签存储在std::tuple
中并简单地使用std::apply
可能更有意义。