C ++ это (что будет ссылка на текущий класс в такой ситуации) - PullRequest
0 голосов
/ 31 января 2011

Имея:

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

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Если я правильно понял ваш вопрос, ответ должен быть да.&variable всегда равно this, как видно из методов экземпляра, вызываемых через variable.

1 голос
/ 31 января 2011

да, это звучит логично, но это всего лишь предположение.

подписавшись изнутри A, хотите ли вы сохранить обратный вызов для этого конкретного экземпляра A.Если да, то вам нужно this.

, мы не знаем ваших потребностей, и я могу представить случаи, когда все три варианта (&a, &b или this) верны.

...