我以for_each和mem_fun_ref为例,但是编译时有一些错误,这是什么问题

#include<iostream>
#include<algorithm>
#include<set>
#include<iterator>
using namespace std;

class Tst
{
public:
    Tst(int a, string b):n(a),s(b)
{}

    bool operator<(const Tst& t)const
    {
        return this->n < t.n;
    }

    int GetN()const
    {
        return n;
    }

    string GetS()const
    {
        return s;
    }

    void SetN(int a)
    {
        n = a;
    }

    void SetName(string name)
    {
        s = name;
    }

    void Print(void)
        {
        cout <<"n is:" << n <<"\ts is:" << s << endl;
    }

private:
    int n;
    string s;
};

int main(void)
{
    typedef set<Tst> TstSet;
TstSet tst;

tst.insert(Tst(10, "abc"));
tst.insert(Tst(1, "def"));
for_each(tst.begin(), tst.end(), mem_fun_ref(&Tst::Print));
return true;
}

最佳答案

std::set包含的对象是const,因此您只能在它们上调用const函数。您的Print函数应标记为const

10-06 00:10