2011-01-30 3 views
0

그래서 필요 (이러한 상황에서 현재 클래스에 대한 링크 일 것입니다 무슨) : 우리는 클래스에 가입 A 내부에 있다면 내가 이해하면C++는이

struct A { void foo(int) { } }; 

typedef std::function<void(int)> Function; 
typedef std::vector<Function>  FunctionSequence; 
typedef FunctionSequence::iterator FunctionIterator; 

FunctionSequence funcs; 

A a; 

funcs.push_back(std::bind(&A::foo, &a, std::placeholders::_1)); 
funcs.push_back(std::bind(&B::bar, &b, std::placeholders::_1)); 

// this calls a.foo(42) then b.bar(42): 
for (FunctionIterator it(funcs.begin()); it != funcs.end(); ++it) 
    (*it)(42); 

funcs.push_back 우리는 대신 &athis

+0

C++ 0x 인 경우 람다 식을 사용하십시오. – Puppy

답변

3

의 말을 정확하게 귀하의 질문, 대답은 예이어야합니다. &variablevariable 이상의 인스턴스 메소드에서 볼 수 있듯이 항상 this과 같습니다.

1

예, 논리적으로 들리 겠지만 그것은 단지 추측입니다.

A에서 구독하는 경우이 특정 인스턴스 A에 콜백을 저장 하시겠습니까? 그렇다면 this이 필요합니다.

우리는 당신의 필요를 모르고 있으며, 세 변종 (&a, &b 또는 this)이 모두 올바른 경우를 상상할 수 있습니다.