2011-11-06 2 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を使用する場合は、関数に必要な追加パラメータのプレースホルダを配置する必要があります。あなたは同じクラスで、または別のオブジェクトからそれをやっているかどうかを

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

あなたはこれを必要とするだろう。この場合、以来、あなたの関数は、3つのパラメータを取ります。

+0

うわー、本当にありがとう..より慎重に読んでおくべきだった –

関連する問題