这是我的班级定义:
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)
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |