2013-03-08 186 views
1

誤差而在OpenCV中創建一個按鈕式的 參數 '空隙(窗口::)(INT,無效*)' 不匹配「CV :: ButtonCallback {又名空隙()(INT,無效)}」在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(); 
}