2013-03-08 5 views
1

Ошибки при создании кнопки в OpenCV аргумента типа «недействительный (Window ::) (интермедиат, аннулируется *)» не соответствует «резюме :: ButtonCallback {аки пустот () (интермедиат, аннулируются)}»создание флажка/кнопок в OpenCV

class Window{ 
    void ChecKBox(int state, void* val){ 
     // do nothing for now 
     return; 
    } 
public: 
    void createCheckbox(){ 
     cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0); 
    } 
}; 

int main(){ 
    Window w; 
    w.createCheckBox(); 
} 

Я не могу найти исправление этой проблемы.

ответ

1

О, вы не можете передать члену функции класса здесь. подумайте об этом, откуда бы появился «этот» указатель? (например, вы называете членов класса, таких как w.CheckBox (1, NULL), здесь нет 'w'.)

Интерфейс highgui немного ограничен. он может вызывать только бесплатные функции или статические члены.

так, если ваша функция обратного вызова ничего из окна не нужно, сделать его статическим:

class Window { 
    static void CheckBox(int state, void* val) { /*you can't use 'this' here!*/ return; } 
public: 
    void createCheckBox() { cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0); } 
}; 

int main() { 
    Window w; 
    w.createCheckBox(); 
} 
Смежные вопросы