2014-06-08 143 views
2

雙鑑於通過引用傳遞C++

double skewAngle; 

我怎麼能忽略這個變量爲一個函數,並將它沒有返回值修改?

我目前的函數聲明如下:

Mat findCard(Mat& baseImage, double *angle) 

當我嘗試findCard(baseImage, *skewAngle);

我得到找不到減速,誰能告訴我我該怎麼辦呢?

+2

你不通過引用傳遞。你正在傳遞一個指針。 –

+0

@AliAlamiri;無需通過參考。第二個參數應該按照函數原型通過指針傳遞。 – haccks

+0

@haccks我知道,我只是通知用戶,因爲標題暗示他認爲他是通過引用傳遞的。 –

回答

2

你的函數調用是錯誤的。您需要傳遞變量skewAngle的地址,因爲函數的第二個參數需要double *。將其稱爲

findCard(baseImage, &skewAngle); 

請注意,根據您的函數聲明,只有第一個參數可以通過引用傳遞。第二個參數必須通過指針傳遞。

3

你通過指針傳遞變量,而不是引用,所以你需要將變量的地址傳遞給函數,如:

findCard(baseImage, &skewAngle); 

如果你想通過引用傳遞它,你需要你的函數聲明更改爲:

Mat findCard(Mat& baseImage, double& angle) 

,然後就可以直接傳遞變量的功能,如:

findCard(baseImage, skewAngle);