gpt4 book ai didi

c++ - 如何为以下类型的 C 程序创建 C++ 包装器类?

转载 作者:行者123 更新时间:2023-11-30 05:30:00 27 4
gpt4 key购买 nike

我以前创建过简单的 C++ 包装器类,但我当前的问题有点令人困惑。我有一个可以连接到 USB 端口的自定义硬件,它根据执行不同事件处理程序的硬件配置给出某些信息。它使用 Ethernet-over-USB 协议(protocol)。 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++ 类。在 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);
}

最佳答案

只需创建一个类并将代码放入其中,例如在您的.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++ - 如何为以下类型的 C 程序创建 C++ 包装器类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com