作者kaneson (Lance)
看板C_and_CPP
标题Re: [问题] 用指标参数输入函数,无法变更原输入(opencv)
时间Thu Apr 18 10:27:09 2013
※ 引述《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