我已經創建了簡單的C++包裝類,但我目前的問題有點令人困惑。我有一個可以連接到USB端口的自定義硬件,根據執行不同事件處理程序的硬件配置,它提供了某些信息。它使用Ethernet-over-USB協議。在PC端的C代碼如下所示:如何爲以下類型的C程序創建C++包裝類?
// Relevant headers
int Event1handler(){
// Code to process event 1
}
void Event2handler(){
// Code to process event 2
}
int main(void){
// Code to setup calls to Event1handler() and Event2handler() using Open Sound Control methods
}
現在我很困惑如何環繞上面的代碼C++類。在C程序中,事件處理程序根據來自USB的信息自動調用。我如何將事件處理程序實現爲根據硬件發送的信息自動調用的類的方法?我可以把main()函數的內容放入類的構造函數中嗎?
編輯:我不需要單獨的類的方法。我只需要將C程序包裝到一個類中。把所有的事件處理程序放到一個單獨的方法中也是可以的(如果可能的話)。我只需要每個事件處理程序收到的數據。
EDIT2:下面是實際的事件處理程序,並調用看起來就像使用OpenSoundControl:
// Relevant headers
int Event1handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void user_data){
// Code to process event 1
}
void Event2handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void user_data){
// Code to process event 2
}
int main(void){
// Code to setup calls to Event1handler() and Event2handler() using Open Sound Control methods
lo_server_thread st;
// "if" means one integer and one float
lo_server_thread_add_method(st, "/folder/data1", "if", Event1handler, NULL);
lo_server_thread_add_method(st, "/folder/data2", "if", Event2handler, NULL);
}
我根本不知道開放聲音控制,但許多基於C語言的回調系統(尤其是GUI)可以包裝在一個類中。回調函數是靜態成員函數。這些回調通常接受一個指向用戶定義數據的指針。當您在對象的構造函數中設置回調函數時,您會將'this'作爲該數據傳遞。回調會將指針轉換回類類型,然後調用成員函數來完成實際工作,並傳遞給回調的任何額外數據。希望有所幫助。 –
感謝您的提示。我覺得它非常相關。我只是將更多的代碼添加到我的文章中,以便您可以看到OpenSoundControl是如何工作的,如果您認爲您的想法適用,請發佈一些示例代碼。 – user1420