非标准语法;使用&创建指向成员的指针

时间:2019-04-10 03:46:53

标签: c++ opencv

我不断遇到此问题“非标准语法;使用'&'创建指向成员的指针”


我将函数声明为:

mouseout

这是我的功能:

public slots:
    void mouseHandler(int event, int x, int y, int flags, void* data_ptr);

............................................... ....................

在我的主要功能中,我叫这个

void MainWindow::mouseHandler(int event, int x, int y, int flags, void* data_ptr) {
  MainWindow points;
  if (event == cv::EVENT_LBUTTONDOWN)
  {
    userdata *data = ((userdata *)data_ptr);
    cv::circle(data->im, cv::Point(x, y), 2, cv::Scalar(0, 0, 255), 5, CV_AA);
    cv::imshow("Camera Calibration", data->im);

    if (data->pts1.size() < 4)
    {
      data->pts1.push_back(cv::Point2f(x, y)); //x-6 ; y-5
      pts.push_back(cv::Point2f(x, y));
    }
  }
}

有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

作为错误消息状态,您需要&来获取成员方法函数的地址:

cv::setMouseCallback("Camera Calibration", &MainWindow::mouseHandler, &data);

并且由于cv::setMouseCallback需要函数指针,因此您的方法应为static