所以:
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
,我们会代替&a
this
答案 0 :(得分:3)
如果我理解你的问题,答案应该是肯定的。 &variable
总是等于this
,正如variable
调用的实例方法所见。
答案 1 :(得分:1)
从A
内部订阅,您是否希望将回调存储到此A
的特定实例。如果是,那么您需要this
。
我们不了解您的需求,我可以想象所有三种变体(&a
,&b
或this
)都是正确的情况。