将数组值传递给结构构造函数

时间:2020-12-29 01:40:14

标签: c++ struct lambda constructor

是否有可能以更好的方式将值从数组传递到结构构造函数:

struct A {
std::string a;
std::string b;
};

std::string array[2] = {"looks", "bad"};
A a = {array[0], array[1]};

这样做看起来很糟糕,不可读,并且小的更改会导致很多问题。我不介意使用其他东西然后简单数组,但我想不出解决这个问题的办法。我正在考虑使用 lambda 来返回数组中的每个值,但我目前正在学习 C++,不知道这是否可行,以及如何编码。

1 个答案:

答案 0 :(得分:0)

如果目标是处理预先存在的数组,那么“更好”的方法是编写一个接受数组的构造函数或 A,如下所示:

struct A {
A(const std::vector<std::string>& args) : a(args[0]), b(args[1]) { };
A(const std::string* args) : a(args[0]), b(args[1]) { };
std::string a;
std::string b;
};

第一个版本更可取,因为传递 std::vector 意味着它包含第二个表单真正不包含的长度信息。