2011-11-06 34 views
-1

我在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)); 

但当然..这不工作..我试着看文档,但找不到任何东西。谁能帮我吗?

+1

查看第一个接受的答案在这里http://stackoverflow.com/questions/768351/complete-example-using-boostsignals-for-c-eventing – thax

+0

“这不工作”是不是一个足够的问题描述。 – interjay

+0

在看到thax指出的内容后,我改变了我的代码..但我仍然收到一连串的错误链接。当我的意思是一堆错误时,我的意思是很多错误。 –

回答

0

使用bind时,您需要为占用您的函数所需的其他参数占位符。在这种情况下,因为你的函数有3个参数:

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

你会需要这个无论你是在同一类或从一个单独的对象这样做。

+0

哇,非常感谢..应该仔细阅读 –