【发布时间】:2013-08-27 19:55:05
【问题描述】:
我正在使用 OpenCV 和 Qt 5。我需要将鼠标回调传递给命名窗口以完成我正在做的一些工作。但是,我无法让它看到我班级的任何私有成员变量。
这里有一些代码:
class testWizard : public QWizard
{
Q_OBJECT
public:
testWizard();
~testWizard();
friend void mouseHandler(int, int, int, void*);
private:
cv::Mat preview;
bool drag;
cv::Rect rect;
};
好友功能:
void mouseHandler(int event, int x, int y, void* param)
{
cv::Point p1, p2;
if(event == CV_EVENT_LBUTTONDOWN && !drag)
{
p1 = cv::Point(x,y);
drag = true;
}
if(event == CV_EVENT_LBUTTONDOWN && drag)
{
cv::Mat temp;
preview.copyTo(temp);
}
}
我不知道我做错了什么。我很确定这是声明这一点的正确方法。它告诉我预览和拖动是未声明的标识符。不幸的是,我需要这样做,因为我需要访问私有成员并且由于隐藏了 this 参数而无法传递指向成员函数的指针。
有人可以帮忙吗?谢谢!
【问题讨论】:
标签: c++ qt opencv friend friend-function