2011-11-06 3 views
-1

동일한 클래스의 함수로 부스트 라이브러리의 신호 기능을 사용했지만 다른 클래스에서 선언 된 객체에 신호를 보내려합니다. 여기객체의 신호/슬롯 사용

그 것이다 :

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'클래스

I은 ​​다음과 같은 기능을 가지고 있습니다

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

와우, 고마워. .. 더 신중하게 읽어야 했어. –

관련 문제