Нестандартный синтаксис;используйте &, чтобы создать указатель на член - PullRequest
0 голосов
/ 10 апреля 2019

Я получаю эту проблему "Нестандартный синтаксис; используйте '&' для создания указателя на член"


Я объявил свою функцию как:

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));
    }
  }
}

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

Из моей основной функции я назвал это

//blabla
{
    //Do something here
    cv::setMouseCallback("Camera Calibration", mouseHandler, &data);

}

Можно ли как-нибудь это исправить?

1 Ответ

1 голос
/ 10 апреля 2019

Как состояние по сообщению об ошибке, вам нужно &, чтобы получить адрес функции-члена:

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

И так как cv::setMouseCallback ожидает указатель на функцию, ваш метод должен быть static.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...