是否有可能以更好的方式将值从数组传递到结构构造函数:
struct A {
std::string a;
std::string b;
};
std::string array[2] = {"looks", "bad"};
A a = {array[0], array[1]};
这样做看起来很糟糕,不可读,并且小的更改会导致很多问题。我不介意使用其他东西然后简单数组,但我想不出解决这个问题的办法。我正在考虑使用 lambda 来返回数组中的每个值,但我目前正在学习 C++,不知道这是否可行,以及如何编码。
答案 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
意味着它包含第二个表单真正不包含的长度信息。