如何通过需要自由函数的成员函数?问题如下:考虑这段代码:#include <iostream>class aClass{public:
void aTest(int a, int b)
{
printf("%d + %d = %d", a, b, a + b);
}};void function1(void (*function)(int, int)){
function(1, 1);}void test(int a,int b){
printf("%d - %d = %d", a , b , a - b);}int main (int argc, const char* argv[]){
aClass a();
function1(&test);
function1(&aClass::aTest); // <-- How should I point to a's aClass::test function?
return 0;}我如何使用a's aClass::test作为参数function1?我坚持这样做。我想访问该班级的成员。
3 回答
偶然的你
TA贡献1841条经验 获得超3个赞
但您也可以在不将class
实例作为function1
C ++ 11中的显式参数传递的情况下执行此操作:
#include <functional>using namespace std::placeholders;void function1(std::function<void(int, int)> fun){ fun(1, 1);}int main (int argc, const char * argv[]){ ... aClass a; auto fp = std::bind(&aClass::test, a, _1, _2); function1(fp); return 0;}
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
指向成员函数的指针与指向函数的指针不同。为了通过指针使用成员函数,您需要一个指向它的指针(显然)和一个要应用它的对象。所以适当的版本function1
将是
void function1(void (aClass::*function)(int, int), aClass& a) { (a.*function)(1, 1);}
并称之为:
aClass a; // note: no parentheses; with parentheses it's a function declarationfunction1(&aClass::test, a);
- 3 回答
- 0 关注
- 476 浏览
添加回答
举报
0/150
提交
取消