Использование boost bind для доступа к функции-члену внутреннего класса - PullRequest
2 голосов
/ 12 января 2011

Я пытаюсь получить доступ к функции-члену вложенного класса в выражении find_if.

Мой код ниже вызывает ошибку компиляции в выражении привязки - (COuter :: innerClass не является классом или пространством имен).

Не могли бы вы помочь мне с правильным выражением связывания?

vector<COuter> vec;

vec.push_back(COuter());

vector<COuter>::const_iterator it = 
  find_if(vec.begin(), vec.end(), bind(&COuter::innerClass::GetTemp, _1) == 42);

Мои примеры классов:


class CInner
{
public:
    CInner() : _temp(42) {};

    int GetTemp() const
    {
        return _temp;
    }

private:

    int _temp;
};

class COuter
{
public:
    CInner innerClass;
};

1 Ответ

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

Правильное выражение: bind(&CInner::GetTemp, bind(&COuter::innerClass, _1)).

...