如何在 capnproto 中设置列表的字符串项C++生成的代码

How to set a string item of a list in capnproto C++ generated code?

本文关键字:字符串 C++ 代码 列表 capnproto 设置      更新时间:2023-10-16

我有这样的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文档,您应该使用builder.set(index,value(。

result.getEmailAddresses().set(i, rand_str(37));

我想它现在应该编译了。