函数之间传递的指针失败并出错

时间:2013-12-10 01:19:00

标签: c++ pointers

我正在尝试编写两个函数,一个调用另一个函数并传入一个参数:

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中”

有人能帮我理解为什么抱怨,以及如何解决? 非常感谢

3 个答案:

答案 0 :(得分:1)

ImageStream * im;是一个指针,您的RegisterIMage()期望引用作为其第二个参数。您需要传递*im。引用隐式引用对象,而不是地址。您的ImageStream*是包含地址的类型。

答案 1 :(得分:0)

它要求IMGStream&您将其视为“IMGStream参考”。虽然这与传递指针非常相似,但语法不能

尝试使用*(去参照运算符)取消引用指针

     idx = RegisterImage (streamid, *im);

答案 2 :(得分:0)

假设IMGStreamImageStream个对象是相同的类型(一个是另一个或类别的typedef),那么该函数期待一个引用并且你传递一个指针。

因此,如果IMGStream和ImageStream对象实际上是同一类型,则应该传递*im而不是im