如何理解这段代码的C ++语法?

时间:2014-06-18 08:00:06

标签: c++ opencv

&I.operator IplImage()的含义是什么,在C ++语法中似乎不熟悉。

Mat I;
Ptr<IplImage> piI = &I.operator IplImage();

3 个答案:

答案 0 :(得分:1)

“operator IplImage”实际上是类型转换运算符的全名。所以“I.operator IplImage()”将我从Mat类型转换为IplImage类型。最后,piI指向生成的IplImage的地址。它相当于:

    Ptr<IplImage> piI = &static_cast<IplImage>(I);

答案 1 :(得分:1)

我不是OpenCV的用户,但我可以向您概述代码的作用:

Mat I; 创建名为Mat的<{1}}对象。

让我们切断下一行: I似乎是Ptr<IplImage> piI的智能指针。

IplImage通过获取地址将&I.operator IplImage()对象转换为Mat对象。

答案 2 :(得分:0)

operator IplImage();

是对转换运算符的调用,它将类型为Mat的对象转换为IplImage类型的对象。

这个表达

&I.operator IplImage()

表示转换对象的地址。

然而,似乎不应该编译代码,因为运算符&amp;应用于转换运算符函数operator IplImage()返回的IplImage类型的临时对象。