在std :: algorithms中调用对象的成员函数(注意:这是一个不同的对象,而不是在容器中)

时间:2011-04-05 05:19:12

标签: function member

我的代码:

#include <algorithm>  
#include <iostream>  
#include <vector>  
using namespace std;  

class myClass {  
    public:  
        myClass() {  
            init();  
    }  
    void init() {  
        _myVector.push_back("Hello");  
        _myVector.push_back("World");  
        _myVector.push_back("Bye!");  
        for_each (_myVector.begin(), _myVector.end(), &myClass::print);  
    }  
    void print(string &myStr) {  
        cout << myStr << "." << endl;  
    }  
    private:  
        vector<string> _myVector;  
};  

int main() {  
    myClass myObj;  
    return 0;  
}  

如果_myVector包含myClass对象或指针,我可以使用std :: mem_fun_ref或std :: mem_fun。有没有办法做到这一点?是的,我不希望myClass :: print是静态的。

1 个答案:

答案 0 :(得分:0)

for_each (_myVector.begin(), _myVector.end(), &myClass::print);

替换为

for_each (_myVector.begin(), _myVector.end(), bind1st(mem_fun(&myClass::print), this));