从成员函数传递函数指针
Passing function pointer from member function
我在尝试一个代码片段时,在VS2010上遇到了以下错误。
Error 1 error C2276: '&' : illegal operation on bound member function expression Line 19
以下是我的代码:
#include<iostream>
using namespace std;
class a
{
public:
void add(int x)
{
cout<<x+x<<endl;
}
void mult(int x)
{
cout<<x*x<<endl;
}
typedef void (a::*fptr)(int);
fptr retFuncP(char ch)
{
if(ch=='+')
{
return &add;
}
else
{
return &mult;
}
}
};
int main()
{
a objA;
void (a::*fptr)(int) = objA.retFuncP('+');
(objA.*fptr)(3);
cin.ignore();
}
使用void (a::*retFuncP(char ch))(int x)
作为替代方案也没有解决问题。这里面好像出了什么问题?
您需要使用&a::add
而不是&add
,因为add
是一个成员函数。与&mult
相同,需要为&a::mult
。请参阅这些修复程序的演示。
相关文章:
- 如何使用指针传递给函数的数组中对象的函数成员
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 将唯一指针的指针传递给采用双指针的函数
- 将 char 指针传递给接受对 char 数组的引用的函数
- 在对象构造期间,将指向尚未构造的子对象的指针传递给另一个子对象的构造函数是否危险?
- 将指针传递到成员的指针,从模板参数包到函数对象
- 如何通过指针传递lambda函数?
- 谁拥有作为指向 Windows API 函数的指针传递的值?
- 模板到函数的时刻地址是否可以作为指向某个函数的函数指针传递?
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- 如何将函数指针传递给方法,以便它可以在Qt的connect()中使用?
- 将指向多维数组向量中的单个项的指针传递给函数 c++
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 如何将指向 C 中函数的"DEFINED"常量的指针传递给函数?
- 将函数指针作为函数参数传递的目的
- 将字符串指针传递到C++和Xcode 11.1中不同线程上运行的函数
- 将类指针传递给函数
- 将指针传递给函数 - 为什么我无法打印地址?
- 为什么这是一个按指针传递函数
- 通过指针传递函数参数