Code Bye

关于类成员函数指针的问题

一个类中,有几个成员函数都是相似void fun();的类型,本人想把这几个函数放入该类中的一个静态函数表中,怎么写呢?查了一些资料,也按着理解尝试写了几次,总是编译报错。
class FUN
{
private:
void fun1();
void fun2();
static auto funTab[];

};
auto FUN::funTab[]={FUN::fun1,FUN::fun2};
解决方案

5

typedef void (FUN::*functionType)();
然后用 functionType 作为数组类型就好了
当然把成员函数指针类型直接写到数组类型上也是可以的,不过正常人都不会这么做

5

对于类C的一个成员指针
T类型成员指针p
这么定义
T C::*p= &C::x;
//成员函数指针 pfun
T (C::*pfun)()=&C::fun;

使用

C obj;
C &ref=obj;
C *ptr=&obj;
obj.*p =10;
ref.*p =10;
(ptr->*p) =10;
(obj.*pfun)();
(ref.*pfun)();
(ptr->*pfun)();

10

typedef 放在内类
class FUN
{
public:
typedef void (FUN::*function)();
private:
void fun1() {};
void fun2() {};
int  func3(int x) { return x; };
static function funTab[3];
};
FUN::function FUN::funTab[3] = { &FUN::fun1, &FUN::fun1, &FUN::fun1 };

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于类成员函数指针的问题