PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] std::list 陣列
作者:
hardware
(哈味)
2015-06-03 15:56:53
開發平台(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這陣列所有元素的值嗎?
謝謝
作者:
Feis
(永遠睡不著 @@)
2015-06-03 16:08:00
http://goo.gl/y4QoN1
如果你不知道怎麼辦的話, 把 payload 改成陣列就好FYI:
http://ideone.com/a0s6FX
此外, 你為什麼覺得 cout 可以直接印出陣列的所有值呢除非你打算把它當字串印, 只是他又不是真的字串?
作者: anyoiuo
2015-06-03 16:41:00
問題出在Shallow copy寫個copy constructor就好了
http://ideone.com/72G1K3
作者:
Feis
(永遠睡不著 @@)
2015-06-03 16:43:00
只寫個 copy constructor 可能不夠對.
作者: anyoiuo
2015-06-03 16:46:00
預設的copy constructor是Shallow copy,只有欄位複製
作者:
Feis
(永遠睡不著 @@)
2015-06-03 16:46:00
請參閱一樓連結. 你還需要實作其他好朋友們才不會有後遺症基本上一個只有 new 沒有 delete 的類別是很奇特的
作者: anyoiuo
2015-06-03 16:49:00
恩,我知道move constructor,在當return時會遇到(效能
作者:
hardware
(哈味)
2015-06-03 16:49:00
感謝 anyoiuo ~
作者:
hardware
(哈味)
2015-06-03 16:50:00
感謝 Feis
作者: anyoiuo
2015-06-03 16:50:00
有new就要有delete,所以要寫destructor他忘了吧XD
作者:
Feis
(永遠睡不著 @@)
2015-06-03 16:50:00
我不是這意思. 算了. forget it阿. 我是這意思 (跳針)不過就這個實作來看, payload 需要是指標的意義不明畢竟陣列是固定大小.又沒有要作分享. 建議 hardware 再想想
繼續閱讀
Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?
jserv
Re: [問題] swith_case 用法
tropical72
[問題] cast array of int to array of pointer
kdjf
[問題] swith_case 用法
totemist
[問題] 8051遠端修改疑問
andy79323
[問題] 新手程式碼問題
AgentSkye56
[問題] 將字元儲存到陣列 不是存到檔案
hardware
[問題] Visual C++實做視窗化選擇?
hibiscus520
[問題] fopen讀相同檔名 (已解決)
totemist
[問題] white noise
DJWS
Links
booklink
Contact Us: admin [ a t ] ucptt.com