如何为以下类型的 C 程序创建 C++ 包装器 class?
How to create a C++ wrapper class for the following kind of C program?
我之前创建了简单的 C++ 包装器 classes,但我当前的问题有点令人困惑。我有一个可以连接到 USB 端口的自定义硬件,它会根据执行不同事件处理程序的硬件配置给出某些信息。它使用 Ethernet-over-USB 协议。 PC端的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++ class 包装在上面的代码周围。在 C 程序中,根据来自 USB 的信息自动调用事件处理程序。我如何将事件处理程序实现为 class 的方法,根据硬件发送的信息自动调用?我可以将 main() 函数的内容放入 class 的构造函数吗?
编辑:我不需要 class 的单独方法。我只需要将 C 程序包装成 class。将所有事件处理程序放入一个方法中也很好(如果可能的话)。我只需要每个事件处理程序接收到的数据。
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);
}
只需创建一个 class 并将代码放入其中,例如在您的 .h
文件中:
class EventWrapper
{
public:
EventWrapper();
static int Event1Handler();
static void Event2Handler();
}
然后在您的 .cpp
文件中:
#include "EventWrapper.h"
// Include relevant headers for your USB device
EventWrapper::EventWrapper()
{
// Code to setup calls to Event1handler() and Event2handler()
// using Open Sound Control methods.
}
int EventWrapper::Event1Handler()
{
// Code to process event 1
}
void EventWrapper::Event2Handler()
{
// Code to process event 2
}
在不了解程序的所有细节的情况下,您可能不得不研究什么是静态的以及您希望如何处理它。
我之前创建了简单的 C++ 包装器 classes,但我当前的问题有点令人困惑。我有一个可以连接到 USB 端口的自定义硬件,它会根据执行不同事件处理程序的硬件配置给出某些信息。它使用 Ethernet-over-USB 协议。 PC端的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++ class 包装在上面的代码周围。在 C 程序中,根据来自 USB 的信息自动调用事件处理程序。我如何将事件处理程序实现为 class 的方法,根据硬件发送的信息自动调用?我可以将 main() 函数的内容放入 class 的构造函数吗?
编辑:我不需要 class 的单独方法。我只需要将 C 程序包装成 class。将所有事件处理程序放入一个方法中也很好(如果可能的话)。我只需要每个事件处理程序接收到的数据。
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);
}
只需创建一个 class 并将代码放入其中,例如在您的 .h
文件中:
class EventWrapper
{
public:
EventWrapper();
static int Event1Handler();
static void Event2Handler();
}
然后在您的 .cpp
文件中:
#include "EventWrapper.h"
// Include relevant headers for your USB device
EventWrapper::EventWrapper()
{
// Code to setup calls to Event1handler() and Event2handler()
// using Open Sound Control methods.
}
int EventWrapper::Event1Handler()
{
// Code to process event 1
}
void EventWrapper::Event2Handler()
{
// Code to process event 2
}
在不了解程序的所有细节的情况下,您可能不得不研究什么是静态的以及您希望如何处理它。