我不断遇到此问题“非标准语法;使用'&'创建指向成员的指针”
我将函数声明为:
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));
}
}
}
有什么办法可以解决这个问题?
答案 0 :(得分:1)
作为错误消息状态,您需要&
来获取成员方法函数的地址:
cv::setMouseCallback("Camera Calibration", &MainWindow::mouseHandler, &data);
并且由于cv::setMouseCallback
需要函数指针,因此您的方法应为static
。