[問題] std::list 陣列

看板C_and_CPP作者 (硬體)時間9年前 (2015/06/03 15:56), 編輯推噓0(0021)
留言21則, 3人參與, 最新討論串1/1
開發平台(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

06/03 16:08, , 1F
06/03 16:08, 1F

06/03 16:18, , 2F
如果你不知道怎麼辦的話, 把 payload 改成陣列就好
06/03 16:18, 2F

06/03 16:21, , 3F
06/03 16:21, 3F

06/03 16:32, , 4F
此外, 你為什麼覺得 cout 可以直接印出陣列的所有值呢
06/03 16:32, 4F

06/03 16:33, , 5F
除非你打算把它當字串印, 只是他又不是真的字串?
06/03 16:33, 5F

06/03 16:41, , 6F
問題出在Shallow copy寫個copy constructor就好了
06/03 16:41, 6F

06/03 16:42, , 7F

06/03 16:43, , 8F
只寫個 copy constructor 可能不夠對.
06/03 16:43, 8F

06/03 16:46, , 9F
預設的copy constructor是Shallow copy,只有欄位複製
06/03 16:46, 9F

06/03 16:46, , 10F
請參閱一樓連結. 你還需要實作其他好朋友們才不會有後遺症
06/03 16:46, 10F

06/03 16:47, , 11F
基本上一個只有 new 沒有 delete 的類別是很奇特的
06/03 16:47, 11F

06/03 16:49, , 12F
恩,我知道move constructor,在當return時會遇到(效能
06/03 16:49, 12F

06/03 16:49, , 13F
感謝 anyoiuo ~
06/03 16:49, 13F

06/03 16:49, , 14F
問題)
06/03 16:49, 14F

06/03 16:50, , 15F
感謝 Feis
06/03 16:50, 15F

06/03 16:50, , 16F
有new就要有delete,所以要寫destructor他忘了吧XD
06/03 16:50, 16F

06/03 16:50, , 17F
我不是這意思. 算了. forget it
06/03 16:50, 17F

06/03 16:51, , 18F
阿. 我是這意思 (跳針)
06/03 16:51, 18F

06/03 16:53, , 19F
不過就這個實作來看, payload 需要是指標的意義不明
06/03 16:53, 19F

06/03 16:53, , 20F
畢竟陣列是固定大小.
06/03 16:53, 20F

06/03 16:53, , 21F
又沒有要作分享. 建議 hardware 再想想
06/03 16:53, 21F
文章代碼(AID): #1LRhD8gB (C_and_CPP)