我在C++中遇到错误 - 错误:无法将"cv::P oint_"转换为"cv::P oint* <int>{aka cv::P oint_<int>*}" 作为回报

I'm getting an Error in C++ - error: cannot convert ‘cv::Point_<int>’ to ‘cv::Point* {aka cv::Point_<int>*}’ in return

本文关键字:cv oint lt int gt 错误 aka 回报 C++ 转换 遇到      更新时间:2023-10-16

我试着运行下面的代码,我得到一个错误。我正在为一个名为"Mat::at"的OpenCV函数创建一个包装器,我正试图让它编译为an。在Ubuntu可信版上使用g++。我列出了我的"。cpp"文件的内容,我的"。hpp"文件,我的错误和下面的编译命令。我将感谢任何帮助返回这个c++ OpenCV函数作为一个C指针。因为这就是我的目标。谢谢你。

错误:

 error: cannot convert ‘cv::Point_<int>’ to ‘cv::Point* 
    {aka cv::Point_<int>*}’ in return
 return self->at<Point>(row, col); 

(我也得到正常的"控制到达非空函数结束错误")

Cpp:

 Point* cv_Mat_at_Point(Mat* self, int row, int col) {
   return self->at<Point>(row, col);
 }

高压泵:

 Point* cv_Mat_at_Point(Mat* self, int row, int col)

编译命令:

 g++ -Wall -shared -fPIC -o c-binding.so c-binding.cpp

Edit for RedX:

Point* cv_create_Point(int x, int y) {
    return new Point(x, y);
}

应该是return &self->at<Point>(row, col);

,因为函数期望Point*