- 论坛徽章:
- 44
|
回复 6# jd808 - #include <functional>
- using namespace std::placeholders;
- class a
- {
- public:
- a();
- ~a();
- int Test1(int num,int a);
- int Test2(int num,int b);
- int Caller(std::function<int(int, int)> f,int n,int t);
- void Call();
- };
- a::a(){}
- a::~a(){}
- int a::Test1(int num,int a)
- {
- printf("i am test1,the data is %d %d\n",num,a);
- return 0;
- }
- int a::Test2(int num,int b)
- {
- printf("i am test2,the data is %d===%d\n",num,b);
- return 0;
- }
- int a::Caller(std::function<int(int, int)> f,int n,int t)//指向函数的指针作函数参数,这里第二个参数是函数指针的参数
- {
- int a=f(n,t);
- return a;
- }
- void a::Call()
- {
- Caller(std::bind(&a::Test1, this, _1, _2),20,30);//这里报错
- printf("************************\n");
- Caller(std::bind(&a::Test2, this, _1, _2),10,40);//这里报错
- }
- int main(void)
- {
- a *v=new a();
- v->Call();
- return 1;
- }
复制代码 |
|