【发布时间】:2016-06-24 16:11:27
【问题描述】:
我正在尝试使用pointer-to-member-function 将成员函数作为参数传递。我已经看到了一些类似here 的链接,但我无法解决问题。
Foo 类有两个成员函数。我需要将addition 函数作为参数传递给NewOper 函数。
这是我的代码。我可以正确地使用指针来调用addition 函数,但是当我尝试将它作为参数传递给NewOper 函数时它给了我一个错误。如果您告诉我如何解决它,我将不胜感激。 (最后两行导致错误)
#include <iostream>
using namespace std;
class Foo{
public:
int addition(int a, int b)
{
return (a + b);
}
int NewOper(int x, int y, int(*fnc2call)(int, int))
{
int r;
r = (*fnc2call)(x, y);
return (r);
}
};
int main()
{
int m,n, k, l;
int (Foo::*fptr) (int, int) = &Foo::addition;
Foo obj;
m=(obj.*fptr)(1,2);
Foo* p = &obj;
n=(p->*fptr)(3,4);
cout << m << endl;
cout << n << endl;
//**********************
int (Foo::*fptr) (int, int, int(*fnc2call)) = &Foo::NewOper;
k = (obj.*fptr)(1, 2, addition);
}
【问题讨论】:
-
这看起来很相似:stackoverflow.com/questions/130322/… 不过我不太确定它是重复的。
-
Foo::addition必须是static才能传递给NewOper。 -
您的问题是关于哪一部分?为什么你把最后两行注释掉了?
-
@Barmar,我的问题是关于最后两行。我取消了它们的注释。这两行给了我错误。
-
请记住,成员函数也将其
this指针作为隐藏参数,因此普通函数点无法使用它们。
标签: c++ function pointers member