看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) WIN10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VS2003 、VS2015 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) A.cpp double* m_t_Matrix; m_t_Matrix = new double[16]; double *&t_refer = m_t_Matrix; GetMode(t_refer); B.cpp double* m_SecMatrix; m_SecMatrix = new double[16]; GetMode(const double* &m_t_matrix) { m_t_matrix = m_SecMatrix; } 補充說明(Supplement): 各位前輩好 上面片段程式可以在VS2003上執行 不過在VS2015會發生錯誤 1.const double *&(非常數限定的)的參考不能以類型double* 的值初始化 2.無法將引數從double* 轉換為 const double *& 目前我的想法是A.cpp中 t_refer 是一個初始化為m_t_Matrix的double指標引用 而B.cpp中的函式會將帶進來的變數作為const 指針本身的值可以改變指向的內容不可以改變 m_t_matrix 前加入& 作為傳參考 所以他相當於讀m_t_Matrix作計算 那在A.cpp中直接函式帶入m_t_Matrix 不就可以了? 且想請問各位前輩這段程式用法是合理的嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.200.146 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1541123383.A.81A.html
steve1012: 你看能不能把你想要做的事講的更清楚一點 11/02 10:39
我透過B.cpp 計算 m_SecMatrix 這個矩陣主要儲存當下模型的位置 然後A.cpp 由t_refer得到矩陣 再由m_t_Matrix去作運算畫出畫面 ※ 編輯: asdfg1597860 (59.127.200.146), 11/02/2018 11:31:03
LPH66: pass by reference 並不是宣告一個參考變數丟進去 11/02 12:22
LPH66: 而是傳一個普通變數, 函數裡會知道你這普通變數是參考至誰 11/02 12:23
確實 不過這是之前工程師的Code 但年代久遠不曉得他當時寫的時空背景 ※ 編輯: asdfg1597860 (59.127.200.146), 11/02/2018 13:43:29
steve1012: 你只是想設值的話傳pointer 就行了吧 為何要new兩次? 11/02 16:39
A.cpp 的new 我也覺得不需要 不過B.cpp 會做運算所以確實需要new ※ 編輯: asdfg1597860 (59.127.200.146), 11/02/2018 17:51:16