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

2024-03-11

我有这样的 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文档 https://capnproto.org/cxx.html在列表部分,您应该使用 builder.set(index, value)。

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

我想现在应该可以编译了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐