是否可以在C++中以这种方式调用对象方法?

Vla*_*ala 0 c++ methods

这是我的班级定义:

class A {
    public:
        void do_lengthy_work() {
        cout << "working." << endl;
        }
};
Run Code Online (Sandbox Code Playgroud)

我有一个类型的对象A,我想打电话do_lengthy_work()给它:

A a;
a.do_lengthy_work();
Run Code Online (Sandbox Code Playgroud)

是否也可以使用以下某些变体调用相同的方法?

A::do_lengthy_work(a);
Run Code Online (Sandbox Code Playgroud)

R S*_*hko 12

你可以用以下函数包装函数mem_fun_ref:

mem_fun_ref(&A::do_lengthy_work)(a);
Run Code Online (Sandbox Code Playgroud)

这对于STL算法非常有用,例如for_each:

std::vector<A> vec;
std::for_each(vec.begin(), vec.end(), mem_fun_ref(&A::do_lengthy_work));
Run Code Online (Sandbox Code Playgroud)

如果你有A *,你会使用mem_fun:

std::vector<A *> vecp;
std:for_each(vecp.begin(), vecp.end(), mem_fun(&A::do_lengthy_work));
Run Code Online (Sandbox Code Playgroud)