Необъявленные идентификаторы функции друга

Я работаю с OpenCV и Qt 5. Мне нужно передать обратный вызов мыши в именованное окно для какой-то работы, которую я делаю. Тем не менее, я не могу увидеть ни одну из закрытых переменных-членов моего класса.

Вот некоторый код:

class testWizard : public QWizard
{
Q_OBJECTpublic:
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.

Кто-нибудь может помочь? Спасибо!

4

Решение

С friend Объявление вашей функции будет иметь доступ к членам testWizard объект. Однако вам все еще нужно предоставить объект или указатель на такой объект для доступа к переменным:

testWizard* wizard = getTestWizard(); // no idea how to do that
if(event == CV_EVENT_LBUTTONDOWN && !wizard->drag) { ... }
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]