将对象/数据从库传递到控制台应用程序(如何)

时间:2013-07-26 22:21:14

标签: c++ events signals

我想在c ++中进行类似系统的事件处理。我试图创造类似的东西;

###Library
class manager
{
public:
   void init(void i) { x = i };
   void fire()
   {
      x("test");
   }
private:
   void x;
};

(空格)

###Console App
void tester(char* i)
{
   printf("%c", i);
}
int main()
{
   manager m;
   m.init(tester);
   m.fire();
   return 0;
}

是的,我现在这是完全错误的方式,但我需要这样的东西。我是新手,我无法理解为什么我不能做那样的事情。

1 个答案:

答案 0 :(得分:2)

您似乎在寻找函数指针。像这样:

typedef void (*EventFunc)(char*);

class manager
{
public:
   void init(EventFunc callback) { x = callback };
   void fire()
   {
      x("test");
   }
private:
   EventFunc x;
};

其余代码应保持不变(printf("%c", i);应为printf("%s", i);除外)。