2
我试图在find_if表达式中访问嵌套类的成员函数。使用boost bind来访问内部类的成员函数
我的代码如下在bind表达式中导致编译错误 - ('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;
};
这里有什么额外的绑定?您应该只传入对该成员的引用。 – CashCow
@CashCow:你需要一个额外的绑定来遍历额外的对象innerClass。它的工作方式与gcc-4.4一样。 –
@CashCow,所需的普通C++表达式是:vec [i] .innerClass.GetTemp()== 42'。 '_1'变量将引用'vec [i]',所以内部的'bind'表达式给了我们对'vec [i] .innerClass'的引用。外层的'bind'把我们的'GetTemp'成员关联起来。 –