看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) g++ Linux 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <cstring> #include <list> using namespace std; #define BUFFERSIZE 1024 class receivebuffer_0{ public: unsigned char *payload; int NALU; receivebuffer_0() // Constructor { payload = new unsigned char[BUFFERSIZE]; NALU = 0; } }; int main() { list<receivebuffer_0> WiFi; receivebuffer_0 data; size_t payloadLength = 100; unsigned char payloadIndex[payloadLength]; payloadIndex[0] = 254; payloadIndex[1] = 30; data.NALU = 1; cout<< (int)payloadIndex[0]<<endl; // output 254 OK memcpy(data.payload , payloadIndex, 2); WiFi.push_back(data); payloadIndex[0] = 40; payloadIndex[1] = 45; data.NALU = 12333; memcpy(data.payload , payloadIndex, 2); WiFi.push_back(data); cout<<(int)WiFi.front().payload[0]<<endl; //output 40 .... should output 254 cout<<WiFi.front().NALU<<endl; // output 1 WiFi.pop_front(); cout<<(int)WiFi.front().payload[0]<<endl; // output 40 cout<<WiFi.front().NALU<<endl; // output 12333 return 0; } 補充說明(Supplement): 我應該要如何修正呢? 另外為什麼不能 cout<<(int)WiFi.front().payload; 這樣不是可以印出 payload這陣列所有元素的值嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.164.19 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1433318216.A.A8B.html
Feis: http://goo.gl/y4QoN1 06/03 16:08
Feis: 如果你不知道怎麼辦的話, 把 payload 改成陣列就好 06/03 16:18
Feis: FYI: http://ideone.com/a0s6FX 06/03 16:21
Feis: 此外, 你為什麼覺得 cout 可以直接印出陣列的所有值呢 06/03 16:32
Feis: 除非你打算把它當字串印, 只是他又不是真的字串? 06/03 16:33
anyoiuo: 問題出在Shallow copy寫個copy constructor就好了 06/03 16:41
anyoiuo: http://ideone.com/72G1K3 06/03 16:42
Feis: 只寫個 copy constructor 可能不夠對. 06/03 16:43
anyoiuo: 預設的copy constructor是Shallow copy,只有欄位複製 06/03 16:46
Feis: 請參閱一樓連結. 你還需要實作其他好朋友們才不會有後遺症 06/03 16:46
Feis: 基本上一個只有 new 沒有 delete 的類別是很奇特的 06/03 16:47
anyoiuo: 恩,我知道move constructor,在當return時會遇到(效能 06/03 16:49
hardware: 感謝 anyoiuo ~ 06/03 16:49
anyoiuo: 問題) 06/03 16:49
hardware: 感謝 Feis 06/03 16:50
anyoiuo: 有new就要有delete,所以要寫destructor他忘了吧XD 06/03 16:50
Feis: 我不是這意思. 算了. forget it 06/03 16:50
Feis: 阿. 我是這意思 (跳針) 06/03 16:51
Feis: 不過就這個實作來看, payload 需要是指標的意義不明 06/03 16:53
Feis: 畢竟陣列是固定大小. 06/03 16:53
Feis: 又沒有要作分享. 建議 hardware 再想想 06/03 16:53