-1
我有一個消息,看起來像:在消息發佈谷歌Protobuf3多個字符串
message Connected {
sint32 xloc = 1; // x spawn world position
sint32 yloc = 2; // y spawn world position
sint32 zrot = 3; // z spawn rotation
string sector = 4; // sector name (unsure about this)
string name = 5; // player name
string pid = 6; // player id
string scolor = 7; // ship color
string sname = 8; // ship name
}
我試圖我的C++這樣的代碼中初始化:
server::player::Connected connectMessage; // send this to this joining client
connectMessage.set_name("clientName");
connectMessage.set_pid("clientId");
connectMessage.set_scolor("shipColor");
connectMessage.set_sname("shipName");
connectMessage.set_xloc(0);
connectMessage.set_yloc(0);
connectMessage.set_zrot(0);
出於某種原因,我設置我的字符串參數,先設置字符串值之前的字符串。所以,如果我做了set_pid,name字段也會變成pid。 set_scolor的名字& pid將被設置爲s_color。 set_sname的名字,pid & scolor會改成sname。看起來他們都共享相同的字符串指針字段位置。
執行後每個字符串字段的結果都是「shipName」。
我是不是正確初始化我的消息?或者我需要在這裏做些不同的事情?當我從編碼流中對消息進行序列化時,我收到了我期望的消息,但手動創建似乎無法與我目前正在嘗試執行的操作一起工作。
非常感謝您的信息。
實際上'stats'是什麼?你錯過了給我們足夠的信息來診斷你的問題。請發佈[MCVE]。 –
統計數據是一種數據結構,不幸的是這不是問題。我可以這樣做: server :: player :: Connected connectMessage; connectMessage.set_name(「clientName」); connectMessage.set_pid(「clientId」); connectMessage.set_scolor(「shipColor」); connectMessage.set_sname(「shipName」); connectMessage.set_xloc(0); connectMessage.set_yloc(0); connectMessage.set_zrot(0); 並且連接消息中每個字符串的結果字符串在執行結束時將是「shipName」。 – m11hut
[添加附加信息](http://stackoverflow.com/posts/39928885/edit)給你的問題! –