如何将函数指针传递给成员函数C++?
How to pass function pointer to member function c++?
所以这就像我关于该主题的第二个问题但是这次我想知道如果我在这里传递一个 int type.Like 的函数会怎样 我想将 fun1 的输出存储在变量 "int my" 在主函数中。我应该如何为此编写包装函数?
#include<iostream>
using namespace std;
class student
{
public:
int fun1(int m)
{
return 2*m;
}
int wrapper(int (student::*fun)(int k))
{
(this->*fun)(int k)
}
};
int main()
{
student s;
int l=5;
int my=s.wrapper(&student::fun1(l));
cout << m << endl;
return 0;
}
包装调用者需要两个参数:
一个用于调用函数,一个用于
用
调用它的参数
int wrapper(int (student::*fun)(int), int k)
{
return (this->*fun)(k);
}
这样称呼它:
int my = s.wrapper(&student::fun1, 1);
cout << my << endl;
当标准库中提供 mem_fn()
时,为什么还要创建自己的包装器:
int my = mem_fn(&student::fun1)(&s,l);
cout<<my<<endl;
所以这就像我关于该主题的第二个问题但是这次我想知道如果我在这里传递一个 int type.Like 的函数会怎样 我想将 fun1 的输出存储在变量 "int my" 在主函数中。我应该如何为此编写包装函数?
#include<iostream>
using namespace std;
class student
{
public:
int fun1(int m)
{
return 2*m;
}
int wrapper(int (student::*fun)(int k))
{
(this->*fun)(int k)
}
};
int main()
{
student s;
int l=5;
int my=s.wrapper(&student::fun1(l));
cout << m << endl;
return 0;
}
包装调用者需要两个参数:
一个用于调用函数,一个用于
用
int wrapper(int (student::*fun)(int), int k)
{
return (this->*fun)(k);
}
这样称呼它:
int my = s.wrapper(&student::fun1, 1);
cout << my << endl;
当标准库中提供 mem_fn()
时,为什么还要创建自己的包装器:
int my = mem_fn(&student::fun1)(&s,l);
cout<<my<<endl;