Re: [問題] 用指標參數輸入函數,無法變更原輸入(opencv)
※ 引述《lakobe080 (kobe)》之銘言:
: 不好意思,最近也碰這個問題
: 雖然有看了推文的提示要用double pointer
: 但還是不懂要怎麼去改
: 為什麼c不會回傳呢??
// 方法1.
int main()
{
...
IplImage * frame_c = NULL ;
load_image( &frame_c ) ;
cout << frame_c->width ;
...
}
void load_image( IplImage ** c )
{
*c = cvLoadImage( "圖片路徑" ) ;
cout << (*c)->width ;
}
// 方法2. call by reference ( in C++ only )
int main()
{
...
IplImage * frame_c = NULL ;
load_image( frame_c ) ;
cout << frame_c->width ;
...
}
void load_image( IplImage * & c )
{
c = cvLoadImage( "圖片路徑" ) ;
cout << c->width ;
}
另外想說 call by reference 在 C++ 跟在其他語言例如JAVA,
是完全不一樣的東西...
JAVA 的 call by reference 是以物件的觀點來定義,
在 C/C++ 的觀點來看, 只不過是傳址, 即是 call by value.
這是新手上網單純查關鍵字最容易搞混的地方.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.80.4
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):