Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何理解C++;这个代码行的语法? 和I运算符IPLIGIVENE()/COD>的含义是什么,在C++语法中似乎不熟悉。 Mat I; Ptr<IplImage> piI = &I.operator IplImage(); mati; Ptr piI=&I.operator IplImage();_C++_Opencv - Fatal编程技术网

如何理解C++;这个代码行的语法? 和I运算符IPLIGIVENE()/COD>的含义是什么,在C++语法中似乎不熟悉。 Mat I; Ptr<IplImage> piI = &I.operator IplImage(); mati; Ptr piI=&I.operator IplImage();

如何理解C++;这个代码行的语法? 和I运算符IPLIGIVENE()/COD>的含义是什么,在C++语法中似乎不熟悉。 Mat I; Ptr<IplImage> piI = &I.operator IplImage(); mati; Ptr piI=&I.operator IplImage();,c++,opencv,C++,Opencv,这个 调用转换运算符,将Mat类型的对象转换为IplImage类型的对象 这个表达式呢 &I.operator IplImage() 表示转换对象的地址 但是,似乎不应该编译代码,因为运算符&应用于转换运算符函数运算符IplImage()返回的类型为IplImage()的临时对象。“运算符IplImage”实际上是类型转换运算符的全名。因此,“I.operator IplImage()”将I从Mat类型转换为IplImage类型。最后,piI指向生成的IplImage的地址。这相当于:

这个

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

这个表达式呢

&I.operator IplImage()
表示转换对象的地址

但是,似乎不应该编译代码,因为运算符&应用于转换运算符函数
运算符IplImage()返回的类型为IplImage()的临时对象。“运算符IplImage”实际上是类型转换运算符的全名。因此,“I.operator IplImage()”将I从Mat类型转换为IplImage类型。最后,piI指向生成的IplImage的地址。这相当于:

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

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

mati
创建一个名为
I
Mat
对象

让我们把下一条线切掉:
Ptr-piI
似乎是
IplImage
的智能指针


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

I
上,调用
operator IplImage()
(强制转换为
IplImage
),获取结果的地址,并从中构造一个
Ptr
。除了当前的问题,避免任何有缺陷的东西。他们早在2010年就废除了神秘的c-api,你也应该废除。谢谢!很清楚。我在Mat类中找到了一个函数:操作符IplImage()const;另一个问题,thsi转换的实现应该由Mat类而不是IplImage类定义,我说的对吗?@4Simplity。
    Ptr<IplImage> piI = &static_cast<IplImage>(I);