使用对象上的信号/槽

Using signals/slots on an object

本文关键字:信号 对象      更新时间:2023-10-16

我使用boost库中的信号功能可以很好地处理同一类中的函数,但现在我想给在另一个类中声明的对象发出信号。

在这里:

在我的'inputReader'类我有以下函数:

void setNonTraverse(char key, int x, int y);
void setChest(char key, int x, int y);
void setEntry(char key, int x, int y);
void setExit(char key, int x, int y);

在我的代码中读取键盘,我有:

inputReader readInput;

/* This is setting up our signal for sending observations */
boost::signals2::signal<void (char, int, int)> sig;
/* Subjects the Observer will connect with */
sig.connect(bind(&inputReader::setChest, &readInput ));

但是当然……这行不通…我试着看文档,但什么也没找到。有人能帮我吗?

当使用bind时,您需要为函数接受的任何其他参数放置占位符。在本例中,由于函数有3个参数:

sig.connect(bind(&inputReader::setChest, &readInput, _1, _2, _3));

无论你是在同一个类中还是在一个单独的对象中,你都需要这个