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

时间:2016-03-23 04:09:09

标签: c++ wrapper

之前我已经创建了简单的C ++包装类,但我当前的问题有点令人困惑。我有一个可以连接到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 ++类。在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);
}

1 个答案:

答案 0 :(得分:1)

只需创建一个类并将代码放入其中,例如在.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
}

如果不了解程序的所有细节,您可能需要使用静态内容以及如何处理它。