看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux/OSX 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) GNURAdio 問題(Question): 我目前卡在這個網頁範例 http://tinyurl.com/ofpb85p 從53 ~ 62行 根據這個範例 我寫了如下 vblock_impl::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const float *in = (const float *) input_items[0]; float *out = (float *) output_items[0]; int ninputs = input_items.size(); //for (int i = 0; i < p_vlen; i++) for (int i = 0; i < noutput_items*p_vlen; i++) { int acc = ((float *) input_items[0])[i]; for (int j=1; j < ninputs; j++) acc += ((float *) input_items[j])[i]; out[i]= (float) acc + out[i]; //我想用陣列方式來寫 但上方這行可能有錯 } 上面程式可能有許多錯誤 我主要問題是input_items和output_items看起來是 array 但是要提取裡面element值 不斷要透過 (float *)指標去做型態轉換 這原因是為何? 這之間的相關性 搞得不是很懂 為何不能直接input_items[0][i] 這類直接做? 以及為何會有((float *) input_items[j])[i] 這種先一個維度型態轉變 然後再提取? 為何不能先整體型態轉換 (float*) input_items[j][i] 再一起提取? 另外這個vector性質array 所讀出的size 無法知道array總共有多少size 或者說 我該如何知道output_items 是幾維陣列? input_items.size()只會返回 其中一維的長度 但另外一維度我感覺是完全未知 希望版上大大能大概給個方向指引 謝謝囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.199.114.20 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1439171001.A.4FA.html ※ 編輯: naikojack (71.199.114.20), 08/10/2015 09:54:52
Feis: 你要去看 gr_vector_const_void_star 的定義. 08/10 10:08
Feis: 基本上就是個 C 的作法 08/10 10:09
Feis: 在沒用 template 的情況下就是用 void * 去指向任意型別 08/10 10:09
naikojack: 懂了 謝謝樓上:) 08/10 10:44
※ 編輯: naikojack (71.199.114.20), 08/10/2015 10:44:28