如何在 capnproto C++ 生成的代码中设置列表的字符串项?
How to set a string item of a list in capnproto C++ generated code?
我有这样的 capnproto 定义:
struct School {
name @0 :Text;
address @1 :Address;
foundation @2 :Date;
emailAddresses @3 :List(Text);
}
我想在构建器中设置 emailAddresses 字段,代码与此类似(但无法编译):
static School::Builder random_School() {
capnp::MallocMessageBuilder msg;
School::Builder result = msg.initRoot<School>();
result.setName(rand_str(36));
result.setAddress(random_Address());
result.setFoundation(random_Date());
result.initEmailAddresses(item_count);
for (size_t i = 0; i < item_count; ++i) {
result.getEmailAddresses()[i] = rand_str(37); // rand_str returns std::string
}
return result;
}
正确的做法是什么?
根据列表部分的 capnproto documentation,您应该使用 builder.set(index, value).
result.getEmailAddresses().set(i, rand_str(37));
我想现在应该可以编译了。
我有这样的 capnproto 定义:
struct School {
name @0 :Text;
address @1 :Address;
foundation @2 :Date;
emailAddresses @3 :List(Text);
}
我想在构建器中设置 emailAddresses 字段,代码与此类似(但无法编译):
static School::Builder random_School() {
capnp::MallocMessageBuilder msg;
School::Builder result = msg.initRoot<School>();
result.setName(rand_str(36));
result.setAddress(random_Address());
result.setFoundation(random_Date());
result.initEmailAddresses(item_count);
for (size_t i = 0; i < item_count; ++i) {
result.getEmailAddresses()[i] = rand_str(37); // rand_str returns std::string
}
return result;
}
正确的做法是什么?
根据列表部分的 capnproto documentation,您应该使用 builder.set(index, value).
result.getEmailAddresses().set(i, rand_str(37));
我想现在应该可以编译了。