[問題] 不同版本編譯出現不同結果

作者: asdfg1597860 (Jay)   2018-11-02 09:49:40
開發平台(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 不就可以了?
且想請問各位前輩這段程式用法是合理的嗎?
作者: steve1012 (steve)   2018-11-02 10:39:00
你看能不能把你想要做的事講的更清楚一點
作者: LPH66 (-6.2598534e+18f)   2018-11-02 12:22:00
pass by reference 並不是宣告一個參考變數丟進去而是傳一個普通變數, 函數裡會知道你這普通變數是參考至誰
作者: steve1012 (steve)   2018-11-02 16:39:00
你只是想設值的話傳pointer 就行了吧 為何要new兩次?

Links booklink

Contact Us: admin [ a t ] ucptt.com