2011-01-30 36 views
0

因此,有: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); 

如果我們在裏面A訂閱類funcs.push_back將我們說的不是&athis

+0

如果您使用的是C++ 0x,請使用lambda表達式。 – Puppy 2011-01-31 00:14:40

回答

3

如果我的理解正確的你的問題,答案應該是肯定的。 &variable始終等於this,如通過variable調用的實例方法所示。

1

是的,這聽起來很合理,但這只是一個猜測。

A內部訂閱,你想存儲回調到這個特定的實例A。如果是,那麼你需要this

我們不知道您的需求,我可以想象所有三種變體(&a&bthis)都正確的情況。

相關問題