를 사용하여 콜백과 같은 멤버 함수를 설정하는 방법이 이런 내가 콜백로 설정할 멤버 함수를 가지고있는에 함수 콜백을 저장하는 클래스, 또 다른 :표준 : 바인드
using namespace std::placeholders;
class A {
typedef std::function<void(int)> Callback;
Callback callback;
A() {}
A(Callback f) : callback(f);
do_something(int x) { callback(x); }
}
class B {
A a;
void function(int x) { printf("%d", x); }
B()
{
a = A(std::bind(&B::function, this, _1));
}
이 작업을 수행하고 콜백 함수를 호출하려고하면 MSVC에서 잘못된 함수 호출 오류가 발생합니다. 여기서 내가 뭘 잘못하고 있니?
axalo으로 2014년 1월 21일
편집 (떨어져 오타에서)이 코드에 오류가없는, 지적했다. 그것은 컴파일됩니다. 하지만 난 몇 가지 테스트를하고 있어요, 나는 이상한 행동을 받고 있어요 : 나는 즉, 생성자의 '이'포인터와 '바인딩'을 사용하는 경우,
B() { a = A(std::bind(&B::function, this, _1)); }
'은행'포인터가 다르다 클래스의 인스턴스에 대한 실제 포인터, 나는이 할 경우 상태 : 인스턴스에서()
void helper() = { a = A(std::bind(&B::function, this, _1)); }
B() { }
및 통화 도우미, 내가 올바른 '이'포인터를 얻을. 이 동작이 정확합니까? 나는 생성자에서 'this'포인터의 값을 신뢰해서는 안된다.
감사합니다.
당신이 맞습니다 ... 사실 오타가 있습니다 ... 원래 코드가 너무 복잡하기 때문에 단순화했습니다. 방금 위의 코드를 컴파일했습니다. 원래 코드를 계속 살펴 봐야 할 것 같아요, 뭔가를 간과해야합니다. 고마워. –