使用結構體後想要對節點中的qstring進行初始化賦值,但是發現失敗,如下:
/*---結構體宣告---*/
typedef
struct infonodeinfonode,
*infolist;
/*---**---*/
infolist pi =
(infolist)
malloc
(sizeof
(infonode));
pi->carlicence =
"nothing"
;
報錯如下:
嘗試使用各種可能的賦值方法,發現依舊失敗,一些對qstring進行操作的方法如下:
qstring用法詳解(連線、替換、初始化與格式轉換、拆分等等
原因在於:因為用的是malloc不是new,c++裡面只有pod可以用malloc,其餘的必須用new,malloc是不會呼叫建構函式的。
什麼是pod?pod全稱plain old data。通俗的講,乙個類或結構體通過二進位制拷貝後還能保持其資料不變,那麼它就是乙個pod型別。
因此將**更改為如下後成功:
infolist pi =
new infonode;
pi->carlicence =
"nothing"
;
[1]. qt中qstring賦值問題
[2]. c++11 pod型別(了解)
結構體賦值問題
首先定義兩個結構體 struct udpdata struct scanudpdata short itotaly long ltotalx udpdata udpdata int callnum udpthread收資料的次數 然後給結構體賦值 pdata new udpdata 注意 此處要ne...
結構體賦值問題
如下面 所示,在給結構體變數賦值時,特別是結構體中的結構體成員變數,需要注意賦值方式。include stdio.h struct time struct date struct datelist void main struct date d3 struct date d2 struct date...
c 結構體直接賦值
通過對c語言的學習,相信大家都知道結構體能夠直接賦值,但是如果結構體內部是陣列,那情況又會如何呢?結果是,還是能夠直接賦值,且是深拷貝,就像是c 實現的 過載一樣的效果。以下是一段示例程式,將幫助你理解 include stdio.h struct s array session 1 結構體能夠作為...