在C ++中,必须使用remove_if调用对非静态成员函数的引用

时间:2018-08-10 16:07:34

标签: c++ non-static remove-if

我可以将remove_if函数与下面的test()函数一起使用。但是,当我尝试将对象传递给remove_if时,出现了本文标题中提到的错误。我个人认为该错误与变量/函数范围有关。

我的代码:

<div onFocus={this.onFocus} onBlur={this.onBlur}>

1 个答案:

答案 0 :(得分:1)

问题在于您正在students容器上进行迭代,该容器看不到比Student_info类型的对象更远的距离,但是要调用的方法在Grade_gen中定义类。为了能够使用调用remove_if的对象,我建议传递一个捕获this的lambda函数(在这种情况下,this的类型为Grade_gen*)。

remove_if(
    students.begin(),
    students.end(),
    [this](Student_info& si) { return this->has_passed(si); }
);

示例:https://ideone.com/TfMKDf