so this has to be done whenever there is a compound type? I.e. types used for messages that are defined in other messages?
If not, what is the rule for when a mutable pointer has to be obtained? I am also noticing that I am having what appears to be this same problem when using 'string' type for foo1. Trying to find a pattern here... Thanks so much for your help. You are a life saver... Jay On Sep 23, 8:47 am, Henner Zeller <h.zel...@acm.org> wrote: > On Wed, Sep 23, 2009 at 08:45, jayt0...@gmail.com <jayt0...@gmail.com> wrote: > > > message foo1 { > > optional int32 value1 = 1; > > optional int32 value2 = 2; > > } > > > message foo2 { > > optional foo1 stuff1 = 1; > > optional foo2 stuff2 = 2; > > } > > > foo1 msg_foo1; > > foo2 msg_foo2; > > > msg_foo2.set_stuff1(foo1); > > > This is the concept of what I'm trying to do. > > Yeah, that will work with CopyFrom() > msg_foo2.mutable_stuff1()->CopyFrom(foo1); > > > > > On Sep 23, 8:25 am, Henner Zeller <h.zel...@acm.org> wrote: > >> Hi, > > >> On Wed, Sep 23, 2009 at 08:13, jayt0...@gmail.com <jayt0...@gmail.com> > >> wrote: > > >> > I am having trouble accessing many members of my .proto file. It > >> > seems that compound members are not accessible with set_() method > >> > calls. I saw in your example code the use of mutable_() calls. What > >> > does this apply to and is there documentation on it? could this be the > >> > solution to my problem? > > >> You should describe your problem more closely, it is not quite clear > >> what you mean. > > >> If you have a message Bar, that contains a message Foo, say: > > >> message Foo { > >> optional int32 value = 1; > > >> } > > >> message Bar { > >> optional Foo foo = 1; > > >> } > > >> you would access 'foo' to set a value with > >> Bar message; > >> message.mutable_foo()->set_value(42); > >> If there is no 'foo', it will implicitly be created (so has_bar() will > >> return 'true' afterwards'). > > >> .. while accessing can be const > >> if (message.has_foo()) > >> printf("%d", message.bar().value()); > > >> But it sounds like you would like to 'set' a complete Foo message. So > >> if you want to 'set' a complete Foo, you would use CopyFrom() > >> Foo foo_message; > >> foo_message.set_value(42); > > >> Bar bar_message; > >> bar_message.mutable_bar()->CopyFrom(foo_message); > > >> -h --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---