2017-02-05 13 views
1

이 같은 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; 
} 

은 무엇인가 이렇게하는 올바른 방법?

답변

2

목록 섹션의 capnproto documentation에 따르면 builder.set (index, value)을 사용해야합니다.

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

지금 컴파일해야합니다.