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

问题描述:

我capnproto的定义是这样的:如何在capnproto C++生成的代码中设置列表的字符串项?

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)); 

我想现在应该编译。