我正在尝试编写两个函数,一个调用另一个函数并传入一个参数:
int RegisterImage( const char * streamID, IMGStream & c ) {
...
}
int OpenImage( const char * streamid, int dsize ) {
ImageStream * im;
int idx = -1;
if ( GetImgRegIdx(streamid, dsize, im) )
idx = RegisterImage (streamid, im);
return idx;
}
调用“RegisterImage()”失败。它抱怨: “在传递'int Core :: RegisterImage(const char *,IMGStream&)'的参数2中”
有人能帮我理解为什么抱怨,以及如何解决? 非常感谢
答案 0 :(得分:1)
ImageStream * im;
是一个指针,您的RegisterIMage()
期望引用作为其第二个参数。您需要传递*im
。引用隐式引用对象,而不是地址。您的ImageStream*
是包含地址的类型。
答案 1 :(得分:0)
它要求IMGStream&
您将其视为“IMGStream参考”。虽然这与传递指针非常相似,但语法不能。
尝试使用*
(去参照运算符)取消引用指针
idx = RegisterImage (streamid, *im);
答案 2 :(得分:0)
假设IMGStream
和ImageStream
个对象是相同的类型(一个是另一个或类别的typedef),那么该函数期待一个引用并且你传递一个指针。
因此,如果IMGStream和ImageStream对象实际上是同一类型,则应该传递*im
而不是im
。